如何在DatePicker对话框中隐藏过去的日期?我不想让用户选择过去的日期
最好的方法是什么?如果我想限制用户只选择未来的日期!
@Override
public void onCreate(Bundle savedInstanceState)
{
.................................................
editDate.setOnClickListener(new View.OnClickListener() {
@SuppressWarnings("deprecation")
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
showDialog(DIALOG_DATE);
}
});
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_DATE:
return new DatePickerDialog(this, new OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
dateTime.set(year, monthOfYear, dayOfMonth);
editDate.setText(dateFormatter
.format(dateTime.getTime()));
}
}, dateTime.get(Calendar.YEAR),
dateTime.get(Calendar.MONTH),
dateTime.get(Calendar.DAY_OF_MONTH));
}
return null;
}
}
答案 0 :(得分:10)
答案 1 :(得分:9)
您可以使用setMinDate (long minDate)来实现目标。 Doc说:
Sets the minimal date supported by this NumberPicker in milliseconds since January 1, 1970 00:00:00 in getDefault() time zone.
答案 2 :(得分:2)
您可以在开关案例中尝试此代码
DatePickerDialog dpd = new DatePickerDialog(AddTaskActivity.this,
myDateListener, year, month, day);
dpd.getDatePicker().setCalendarViewShown(false);
dpd.show();
myDateListener遵循代码
private DatePickerDialog.OnDateSetListener myDateListener = new DatePickerDialog.OnDateSetListener(){
@Override
public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {
showDate(arg1, arg2 + 1, arg3);
}
};
和showDate()是在textView中显示日期的方法 这是showDate()
的代码 public void showDate(int year, int month, int day) {
String day1 = String.valueOf(day);
String month1 = String.valueOf(month);
String s2 = day1 + "/" + month1 + "/" + year;
Log.e("date", s2);
Cal.setText(s2);
}
希望它会对你有所帮助:)。
答案 3 :(得分:1)
您可以使用一行代码解决它:
datePicker.setMinDate(Calendar.getInstance().getTimeInMillis());
这样,日期选择器将仅显示当前时间和前进的日期。