Как ограничить пользователя на DatePicker только для выбора даты до сегодняшнего дня - 18 лет - PullRequest
6 голосов
/ 07 февраля 2012

Как ограничить DatePicker, чтобы не выбирать дату в будущем.У меня есть DatePicker в деятельности, которая используется для регистрации.Что делать, чтобы пользователь не мог выбрать дату дня рождения, если у пользователя меньше 18 лет (например, он не может выбрать дату после сегодняшнего дня - 18 лет)?

Ответы [ 3 ]

2 голосов
/ 17 марта 2013

Я надеюсь, что вы получили ответ до сих пор.Следующее может быть полезно и другим: Если вы хотите отключить пользователя, чтобы он выбирал дату через 18 лет после сегодняшнего дня, вот что вы можете сделать.

Получите время с 1 января 1970 года по 18 лет(в миллисекундах)

   Calendar cal = Calendar.getInstance();
   cal.set(cal.get(Calendar.YEAR)+18,cal.get(Calendar.MONTH),cal.get(Calendar.DAY_OF_MONTH), 
            cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), 0);
   long time = cal.getTimeInMillis();

установить максимальную допустимую дату в DatePicker

   datepicker2.setMaxDate(time);

Надеюсь, что это поможет любому, кто ищет ответ

2 голосов
/ 07 февраля 2012

Вы не упомянули, какой уровень API. В Honeycomb и более поздних версиях DatePicker имеет методы setMin / MaxDate, которые можно использовать для ограничения допустимого диапазона.

0 голосов
/ 16 января 2017

Посчитайте год до 18, начиная с текущего (текущего года), по int minYear = currentYear - 18;А затем установите эту дату с помощью (Мин год, текущий месяц, текущий день) в качестве максимального предела выбора даты.

    private static void setMaxLimitInDatePicker(DatePickerDialog datePickerDialog) {
    final Calendar calendar = Calendar.getInstance();

    int currentYear = calendar.get(Calendar.YEAR);
    int currentMonth = calendar.get(Calendar.MONTH);
    int currentDay = calendar.get(Calendar.DAY_OF_MONTH);

    int minYear = currentYear - 18;
    int minMonth = currentMonth;
    int minDay = currentDay;

    calendar.set(minYear, minMonth, minDay);
    long minDateInMilliSeconds = calendar.getTimeInMillis();

    // Set 18 years from today as max limit of date picker
    datePickerDialog.getDatePicker().setMaxDate(minDateInMilliSeconds);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...