Установите ограничения даты датпикера для android datepicker
Я использую datePicker в android для отображения изображений на основе выбранных пользователем дат. Мне нужно ограничить указанные даты до определенных дней, например, с 1 января 2010 года по 31 декабря 2010 года. Простой, как я думал, но нет, где я могу найти ответ о том, как ограничить эти даты.
Кто-нибудь знает, как ограничить даты для Android DatePicker
Ответы
Ответ 1
Вы можете просто установить:
dateDialog.getDatePicker().setMaxDate(new Date().getTime());
и
dateDialog.getDatePicker().setMinDate(new Date().getTime());
где dateDialog является
new DatePickerDialog()
а тип параметра для MaxDate и MinDate - long
Ответ 2
Возможно, слишком поздно ответить, но установить min
и max
дату для DatePickerDialog
легко. Работает для всех версий Android. Просто вам нужно вернуть DatePickerDialog
на основе версии Android
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
Думаю, вам нужно реализовать свой собственный DatePicker
. Логикой этого было бы следующее: "Только некоторые разработчики когда-либо ограничивали бы DatePicker
, поэтому им нужно было реализовать функциональность самостоятельно".
Ответ 4
Почему вы не должны создавать новый макет, например DatePicker, с настройкой. Вы можете делать со Спиннерами и Форлопом.
Ответ 5
U может добиться этого, набрав простую строку
mDatePicker.getDatePicker().setMinDate(System.currentTimeMillis());
mcurrentDate.add(Calendar.MONTH,6);
mDatePicker.getDatePicker().setMaxDate(mcurrentDate.getTimeInMillis());