如何在 Android DatePicker 中设置最小和最大日期?
Posted
技术标签:
【中文标题】如何在 Android DatePicker 中设置最小和最大日期?【英文标题】:How do you set min and max dates in an Android DatePicker? 【发布时间】:2014-01-15 18:58:14 【问题描述】:我正在使用 android 的默认日期选择器,我支持的最小 SDK 为 10,我想设置日期选择器的最小和最大日期。
这是我的 MainActivity 类中 onCreate 方法之后的内容:
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;
【问题讨论】:
***.com/questions/10836679/… for set maxDate() in api ***.com/a/32943731/3758898 你的最小日期和最大日期应该向我解释什么?? 【参考方案1】:您可以从 DatePickerDialog 获取底层 DatePicker(只需调用 getDatePicker())并使用以下方法设置其边界:
setMinDate(long minDate) setMaxDate(long maxDate)其中参数是自默认时区 1970 年 1 月 1 日 00:00:00 以来的通常毫秒数。当然,您仍然需要计算这些值,但这对于 Calendar 类应该是微不足道的:只需传递当前日期并从中添加或减去 x 年..
【讨论】:
但我相信这是支持 api 11 及更高版本....这就是为什么我提到我使用 min sdk 10 并且在我的代码末尾你可以看到我评论的内容 // datePicker.getDatePicker().setMinDate(d); //datePicker.getDatePicker().setMaxDate(1546210800000L);【参考方案2】:在ios默认的DatePicker
中提供了设置最小值的功能。和最大。日期选择器的日期。 Android 应用程序开发中也可以使用相同的功能,但它适用于 Android API 11 及更高版本。这意味着最小和最大日期范围的功能在 Android API 11 以下的设备中不起作用。
为了克服此类问题并在所有 Android 设备(包括 Android API 11 以下的设备)中支持此功能,我们必须扩展“DatePickerDialog”类以提供设置最小和最大日期范围的功能选择。检查下面给出的链接-
How to make a Custom DatePicker control with maximum and minimum date range in Android application
有关实现的解释,请查看以下链接-
Explain the implementation of Custom DatePicker in our application
【讨论】:
【参考方案3】:我通过关注解决了这个问题
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());
希望对你有帮助
【讨论】:
以上是关于如何在 Android DatePicker 中设置最小和最大日期?的主要内容,如果未能解决你的问题,请参考以下文章
在新的 Material DatePicker 中设置标题颜色
如何使用 Formik 在 react-datepicker 中设置初始日期?
如何使用 Jquery 在 DatePicker 中设置昨天的日期