我在android中使用datePicker来根据用户选择的日期显示图像。我需要将所述日期限制在特定日期,例如2010年1月1日至2010年12月31日。简单,因为我认为但没有在哪里可以找到关于如何限制这些日期的答案。
有没有人知道如何限制Android DatePicker的日期
答案 0 :(得分:7)
你可以设置:
dateDialog.getDatePicker().setMaxDate(new Date().getTime());
和
dateDialog.getDatePicker().setMinDate(new Date().getTime());
其中dateDialog是
new DatePickerDialog()
并且为MaxDate和MinDate设置的参数类型是long
答案 1 :(得分:1)
回答可能为时已晚,但很容易为min
设置max
和DatePickerDialog
日期。 适用于所有Android版本。您只需返回基于Android版本的DatePickerDialog
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;
}
答案 2 :(得分:0)
我猜你必须实现自己的DatePicker
。这背后的逻辑是:“只有少数开发人员会限制DatePicker
所以他们必须实现自己的功能。”
答案 3 :(得分:0)
为什么你不应该使用customoption设计像DatePicker这样的新布局。你可以使用Spinners和Forloops。
答案 4 :(得分:0)
你可以通过输入一个简单的行
来实现这一点mDatePicker.getDatePicker().setMinDate(System.currentTimeMillis());
mcurrentDate.add(Calendar.MONTH,6);
mDatePicker.getDatePicker().setMaxDate(mcurrentDate.getTimeInMillis());