问题
I am using datePicker in android to display images based on user selected dates. I need to limit said dates to certain days for instance Jan 1st 2010 to Dec 31st 2010. Simple as that i thought but no where can i find the answer on how to limit these dates.
Does anyone know how to limit the dates for Android DatePicker
回答1:
You can just set :
dateDialog.getDatePicker().setMaxDate(new Date().getTime());
and
dateDialog.getDatePicker().setMinDate(new Date().getTime());
where dateDialog is a
new DatePickerDialog()
and the param type to set for MaxDate and MinDate is a long
回答2:
It might be too late to answer, but the it is easy to set the min
and max
date for DatePickerDialog
. Works for All Android versions. Simply you need to return the DatePickerDialog
based on Android version
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;
}
回答3:
I guess you have to implement your own DatePicker
. The logic behind this would be: "Only a few developers would ever limit the DatePicker
so they have to implement the functionality themselfs."
回答4:
Why you should not design new layout like DatePicker with customoption. You can do with Spinners and Forloops.
回答5:
U can achieve this by typing a simple line
mDatePicker.getDatePicker().setMinDate(System.currentTimeMillis());
mcurrentDate.add(Calendar.MONTH,6);
mDatePicker.getDatePicker().setMaxDate(mcurrentDate.getTimeInMillis());
来源:https://stackoverflow.com/questions/2526080/set-android-datepicker-date-limits