我正在使用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;
}
答案 0 :(得分:12)
您可以从DatePickerDialog获取基础DatePicker(通过简单地调用getDatePicker())并使用以下命令设置其边界:
其中参数是自默认时区1970年1月1日1970:00 00:00:00以来的通常毫秒数。当然,你仍然需要计算这些值,但这对于Calendar类来说应该是微不足道的:只需传递当前日期并从中添加或减去x年......
答案 1 :(得分:1)
在iOS的默认DatePicker
中,它提供了设置min的功能。最多日期选择器的日期。 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
答案 2 :(得分:1)
我通过以下
解决了这个问题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());
希望它会帮助你