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

时间:2014-09-17 11:51:20

标签: 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;
     }

}

4 个答案:

答案 0 :(得分:10)

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

以下是SetMinDate的{​​{1}}示例代码。

DatePickerDialog

答案 1 :(得分: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.

答案 2 :(得分:2)

您可以在开关案例中尝试此代码

DatePickerDialog dpd = new DatePickerDialog(AddTaskActivity.this,
                    myDateListener, year, month, day);
            dpd.getDatePicker().setCalendarViewShown(false);
            dpd.show();

myDateListener遵循代码

private DatePickerDialog.OnDateSetListener myDateListener = new DatePickerDialog.OnDateSetListener(){

    @Override
    public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {

        showDate(arg1, arg2 + 1, arg3);
    }
};

和showDate()是在textView中显示日期的方法 这是showDate()

的代码
 public void showDate(int year, int month, int day) {

    String day1 = String.valueOf(day);
    String month1 = String.valueOf(month);



   String  s2 = day1 + "/" + month1 + "/" + year;

    Log.e("date", s2);
    Cal.setText(s2);
}

希望它会对你有所帮助:)。

答案 3 :(得分:1)

您可以使用一行代码解决它:

datePicker.setMinDate(Calendar.getInstance().getTimeInMillis());

这样,日期选择器将仅显示当前时间和前进的日期。

Reference