Как показать календарь всего одного года с текущей даты в Android?

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

textView1.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    showDialog(DATE_DIALOG_ID);

                }
            });


    protected Dialog onCreateDialog(int id) {
        final Calendar now = Calendar.getInstance();

        switch (id) {
        case DATE_DIALOG_ID:
            // set date picker as current date
            DatePickerDialog _date =   new DatePickerDialog(this, date,myCalendar
                    .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                    myCalendar.get(Calendar.DAY_OF_MONTH)){
                @Override
                public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth)
                {   
                    if (year < now.get(Calendar.YEAR))

                        view.updateDate(myCalendar
                                .get(Calendar.YEAR), myCalendar
                                .get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH));

                    if (monthOfYear < now.get(Calendar.MONTH) && year == now.get(Calendar.YEAR))
                        view.updateDate(myCalendar
                                .get(Calendar.YEAR), myCalendar
                                .get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH));

                    if (dayOfMonth < now.get(Calendar.DAY_OF_MONTH) && year == now.get(Calendar.YEAR) && 
                            monthOfYear == now.get(Calendar.MONTH))
                        view.updateDate(myCalendar
                                .get(Calendar.YEAR), myCalendar
                                .get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH));
                        }
            };
            return _date;
        }
        return null;
    }

3 ответа

Решение

Получить текущую дату. затем увеличьте значение года на единицу. затем использовать функцию setMaxDate как установить максимальную дату в диалоге выбора даты в Android? вопрос показывает.

Использование setMinDate() а также setMaxDate() на DatePicker, Вы можете получить к нему доступ из вашего DatePickerDialog с getDatePicker() (требуется уровень API 11).

http://developer.android.com/reference/android/widget/DatePicker.html

Попробуйте создать календарь, как показано ниже, вместо вызова Calender.getInstance();

Календарь minCal = новый GregorianCalendar(2013, Calendar.JANUARY, 1);

Другие вопросы по тегам