Установить ограничения даты даты android - PullRequest
11 голосов
/ 26 марта 2010

Я использую DatePicker в Android для отображения изображений на основе выбранных пользователем дат.Мне нужно ограничить указанные даты определенными днями, например, с 1 января 2010 года по 31 декабря 2010 года. Я просто так подумал, но нигде не могу найти ответ о том, как ограничить эти даты.

Кто-нибудь знает, какограничить даты для Android DatePicker

Ответы [ 5 ]

7 голосов
/ 07 июля 2014

Вы можете просто установить:

dateDialog.getDatePicker().setMaxDate(new Date().getTime());

и

dateDialog.getDatePicker().setMinDate(new Date().getTime());

, где dateDialog является

new DatePickerDialog()

и тип параметра для MaxDate и MinDate равен long

1 голос
/ 30 августа 2013

Возможно, будет слишком поздно ответить, но для DatePickerDialog легко установить дату min и max. Работает для всех версий 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;
}
0 голосов
/ 14 марта 2017

U можно добиться этого, набрав простую строку

mDatePicker.getDatePicker().setMinDate(System.currentTimeMillis());
        mcurrentDate.add(Calendar.MONTH,6);
        mDatePicker.getDatePicker().setMaxDate(mcurrentDate.getTimeInMillis());
0 голосов
/ 08 мая 2014

Почему вы не должны создавать новый макет, такой как DatePicker, с возможностью выбора.Вы можете сделать с Spinners и Forloops.

0 голосов
/ 26 марта 2010

Полагаю, вам нужно реализовать свой собственный DatePicker. Логика, лежащая в основе этого, будет следующей: «Только несколько разработчиков когда-либо ограничат DatePicker, поэтому им придется самостоятельно реализовывать эту функциональность».

...