如何隐藏过去的日期并限制用户仅选择将来的日期

Sun*_*Sun 16 android android-datepicker

如何在DatePicker对话框中隐藏过去的日期?我不想让用户选择过去的日期

什么是最好的方式?如果我想限制用户只选择未来的日期!

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        .................................................
        editDate.setOnClickListener(new View.OnClickListener() {

            @SuppressWarnings("deprecation")
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                showDialog(DIALOG_DATE);
            }
        });   

    }

     @Override
        protected Dialog onCreateDialog(int id) {
            switch (id) {
            case DIALOG_DATE:
                return new DatePickerDialog(this, new OnDateSetListener() {

                    @Override
                    public void onDateSet(DatePicker view, int year,
                            int monthOfYear, int dayOfMonth) {
                        dateTime.set(year, monthOfYear, dayOfMonth);
                        editDate.setText(dateFormatter
                                .format(dateTime.getTime()));
                    }
                }, dateTime.get(Calendar.YEAR),
                   dateTime.get(Calendar.MONTH),
                   dateTime.get(Calendar.DAY_OF_MONTH));
            }
            return null;
     }

}
Run Code Online (Sandbox Code Playgroud)

Nir*_*tel 10

您必须使用setMinDate作为最短日期,如果要设置最大日期,还可以使用setMaxDate.

下面是示例代码SetMinDateDatePickerDialog.

@Override
protected Dialog onCreateDialog(int id) {
        switch (id) {
        case DIALOG_DATE:

            DatePickerDialog mDatePickerDialog = new DatePickerDialog(this, new OnDateSetListener() {

                @Override
                public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                    dateTime.set(year, monthOfYear, dayOfMonth);
                    editDate.setText(dateFormatter.format(dateTime.getTime()));
                }
            }, dateTime.get(Calendar.YEAR), dateTime.get(Calendar.MONTH), dateTime.get(Calendar.DAY_OF_MONTH));
            Calendar mCalendarMinimum = Calendar.getInstance();
            mCalendarMinimum.add(Calendar.HOUR, -1);
            mDatePickerDialog.getDatePicker().setMinDate(mCalendarMinimum.getTimeInMillis());
            return mDatePickerDialog;
        }
        return null;
    }
Run Code Online (Sandbox Code Playgroud)


Ale*_*lan 9

您可以使用setMinDate(long minDate)来实现目标.Doc说:

Sets the minimal date supported by this NumberPicker in milliseconds since January 1, 1970 00:00:00 in getDefault() time zone.
Run Code Online (Sandbox Code Playgroud)