如何在Android DatePicker中设置最小和最大日期?

如何在Android DatePicker中设置最小和最大日期?,android,android-datepicker,Android,Android Datepicker,我使用Android的默认日期选择器,我支持的最小SDK是10,我想设置日期选择器的最小和最大日期 以下是我在onCreate方法之后的MainActivity类中的内容: private void registerButtonListeners() { Calendar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v)

我使用Android的默认日期选择器,我支持的最小SDK是10,我想设置日期选择器的最小和最大日期

以下是我在onCreate方法之后的MainActivity类中的内容:

private void registerButtonListeners() {
    Calendar.setOnClickListener(new View.OnClickListener() 
    {   
        @Override
        public void onClick(View v) {
            showDialog(DATE_PICKER_DIALOG);
        }
    });
}

@Override
protected Dialog onCreateDialog(int id)
{
    switch(id)
    {
    case DATE_PICKER_DIALOG: return showDatePicker();

    }
    return super.onCreateDialog(id);
}
private DatePickerDialog showDatePicker()
{
        DatePickerDialog datePicker= new DatePickerDialog(MainActivity.this,android.R.style.Theme_Holo_Dialog_NoActionBar_MinWidth,new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear,
                    int dayOfMonth) {
                mCalendar.set(Calendar.YEAR,year);
                mCalendar.set(Calendar.MONTH,monthOfYear);
                mCalendar.set(Calendar.DAY_OF_MONTH,dayOfMonth);
                updateDateText();

            }
        },mCalendar.get(Calendar.YEAR),mCalendar.get(Calendar.MONTH),mCalendar.get(Calendar.DAY_OF_MONTH));


        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
        {
            long d=1356994800000L;
            //datePicker.getDatePicker().setMinDate(d);
            //datePicker.getDatePicker().setMaxDate(1546210800000L);

        }
        return datePicker;
}

您可以从DatePickerDialog获取基础DatePicker(只需调用getDatePicker()),并使用以下命令设置其边界:


其中,参数是默认时区中自1970年1月1日00:00:00以来的通常毫秒数。当然,您仍然需要计算这些值,但这对于Calendar类来说应该是微不足道的:只需传递当前日期并从中添加或减去x年。

在iOS的默认
日期选择器中,它提供了为日期选择器设置最小和最大日期的功能。同样的功能在Android应用程序开发中也可用,但在Android API 11及以上版本中也可用。这意味着最小和最大日期范围的功能在低于Android API 11的设备中不起作用

为了克服这种问题并在所有Android设备(包括低于Android API 11的设备)中支持此功能,我们必须扩展“DatePickerDialog”类,以提供设置可选择的最小和最大日期范围的功能。检查下面给出的链接-

有关实现的解释,请查看下面的链接-


我通过以下方法解决了这个问题

DatePickerDialog datePickerDialog;
final Calendar c = Calendar.getInstance();
    int year = c.get(Calendar.YEAR);
    int month = c.get(Calendar.MONTH);
    int day = c.get(Calendar.DAY_OF_MONTH);
    datePickerDialog = new DatePickerDialog(getActivity(), this, year, month, day);
    datePickerDialog.getDatePicker().setMinDate(c.getTimeInMillis());    

希望它能对您有所帮助

,但我相信这是受api 11及以上支持的…这就是为什么我提到我使用min sdk 10,并且在我的代码末尾,您可以看到我的注释//datePicker.getDatePicker().setMinDate(d)//datePicker.getDatePicker().setMaxDate(15462080000L);对于api<11中的set maxDate(),请尝试以下操作,您的最小日期和最大日期cau应该向我解释什么??