我正在使用Android的datePicker来根据用户选择的日期显示图像。我需要将可选日期限制在特定日期范围内,例如2010年1月1日至2010年12月31日。这似乎很简单,但我找不到如何限制这些日期的答案。
有人知道如何限制Android DatePicker的日期吗?
我正在使用Android的datePicker来根据用户选择的日期显示图像。我需要将可选日期限制在特定日期范围内,例如2010年1月1日至2010年12月31日。这似乎很简单,但我找不到如何限制这些日期的答案。
有人知道如何限制Android DatePicker的日期吗?
dateDialog.getDatePicker().setMaxDate(new Date().getTime());
and
dateDialog.getDatePicker().setMinDate(new Date().getTime());
new DatePickerDialog()
对于MaxDate和MinDate,要设置的参数类型为长整型(long)
DatePickerDialog
的min
和max
日期非常容易。简单地说,您需要根据Android版本返回DatePickerDialog
即可。请保留HTML标签。protected Dialog onCreateDialog(int id)
{
switch ( id )
{
case DATE_DIALOG_ID:
DatePickerDialog dialog = null;
if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB )
{
dialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener()
{
@Override
public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDate)
{
mTextView.setText(selectedDate + "/" + selectedMonth + 1 + "/" + selectedYear);
}
}, year, month - 1, date);
Calendar currentDate = Calendar.getInstance();
dialog.getDatePicker().setMaxDate(currentDate.getTimeInMillis());
//If you need you can set min date too
}
else
{
dialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener()
{
@Override
public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDate)
{
mTextView.setText(selectedDate + "/" + selectedMonth + 1 + "/" + selectedYear);
}
}, year, month - 1, date)
{
@Override
public void onDateChanged(DatePicker view, int year, int month, int day)
{
if ( year <= maxYear && month + 1 <= maxMonth && date <= maxDate ) //meets your criteria
{
view.updateDate(year, month, date); //update the date picker to selected date
}
else
{
view.updateDate(maxYear, maxMonth - 1, maxDate); // or you update the date picker to previously selected date
}
}
};
}
return dialog;
}
return null;
}
我猜你得自己实现你自己的DatePicker
。这背后的逻辑是:“只有少数开发者会限制DatePicker
,所以他们必须自己实现功能。”
为什么你不应该像自定义选项一样设计新的DatePicker布局。你可以使用Spinners和Forloops来完成。
您可以通过输入一行简单的代码来实现这个功能
mDatePicker.getDatePicker().setMinDate(System.currentTimeMillis());
mcurrentDate.add(Calendar.MONTH,6);
mDatePicker.getDatePicker().setMaxDate(mcurrentDate.getTimeInMillis());