Android DatePicker Ограничение даты - PullRequest
7 голосов
/ 09 февраля 2011

Я использую DatePicket в своей активности,

Я хочу ограничить выбранную пользователем дату текущей датой.

Они не должны иметь возможность выбирать дату, превышающую текущую дату.

спасибо.

Ответы [ 4 ]

8 голосов
/ 03 марта 2011

да, вы можете сделать это очень легко, вот пример проверки:

if(dateObj1.before(dateObj2) || dateObj1.equals(dateObj2)){
//the program runs normally
}
else{
                new AlertDialog.Builder(PM_Edit.this)

                .setTitle("Wrong Data Input!")

                .setMessage("The end Date must be Before the start Date, please insert new Date values")

                .setNeutralButton("Ok",

                new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog,

                int which) {

                }

                }).show();
            }

Кредиты для: http://www.brighthub.com/mobile/google-android/articles/41545.aspx

5 голосов
/ 24 ноября 2011
DatePicker datePicker = (DatePicker)findViewById(R.id.new_date_picker);


datePicker.init(year, month, day, new OnDateChangedListener() {

    @Override
    public void onDateChanged(DatePicker view, int year, int monthOfYear,int dayOfMonth) {

        if(isDateAfter(view)){
            Calendar mCalendar = Calendar.getInstance();
            view.init(mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH), this);
        }
    }


    private boolean isDateAfter(DatePicker tempView) {
        Calendar mCalendar = Calendar.getInstance();
        Calendar tempCalendar = Calendar.getInstance();
        tempCalendar.set(tempView.getYear(), tempView.getMonth(), tempView.getDayOfMonth(), 0, 0, 0);
        if(tempCalendar.after(mCalendar))
            return true;
        else 
            return false;
    }
});
3 голосов
/ 09 февраля 2011

Я не работал с DatePicker, но в документации не показаны какие-либо методы, которые могут ограничивать максимальную дату, которую отображает сборщик, но вы всегда можете проверить дату, которую он возвращает, и уведомить пользователя о критерии проверки.

0 голосов
/ 09 февраля 2011

Я согласен с Шейхом.

Возможно, рассмотрите возможность проверки в введенную дату и, если она недействительна, уведомите пользователя и снова запустите DatePicker.

Кроме этого, возможно, пользовательский виджет, но я не видел способа сделать это по умолчанию.

...