当我的DatePickerDialog显示年份设置为“ 1900”时。 我只知道如何限制过去的日期,但我不知道如何限制过去的日期。 我想发生的事情如下。

恩。 用户想要输入支票/支票日期,我将只允许过去的日期为当前年份。

public void ChequeDate(View view) {
    DatePickerDialog dpd = new DatePickerDialog(PaymentHeader.this,
            new DatePickerDialog.OnDateSetListener() {
                @Override
                public void onDateSet(DatePicker view, int year,
                                      int monthOfYear, int dayOfMonth) {
                    if (year < mYear)
                        view.updateDate(mYear, mMonth, mDay);

                    if (monthOfYear < mMonth && year == mYear)
                        view.updateDate(mYear, mMonth, mDay);

                    if (dayOfMonth < mDay && year == mYear && monthOfYear == mMonth)
                        view.updateDate(mYear, mMonth, mDay);

                    if (monthOfYear < 9) {
                        if (dayOfMonth < 10) {
                            ChequeDateET.setText(year + "-0"
                                    + (monthOfYear + 1) + "-0" + dayOfMonth);
                        } else {
                            ChequeDateET.setText(year + "-0"
                                    + (monthOfYear + 1) + "-" + dayOfMonth);
                        }
                    } else {
                        if (dayOfMonth < 10) {
                            ChequeDateET.setText(year + "-"
                                    + (monthOfYear + 1) + "-0" + dayOfMonth);
                        } else {
                            ChequeDateET.setText(year + "-"
                                    + (monthOfYear + 1) + "-" + dayOfMonth);
                        }
                    }
                }
            }, mYear, mMonth, mDay);
    //dpd.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);
    dpd.show();
}

#1楼 票数:0 已采纳

您必须获取current calendar instance并从中获取year, month and date对象作为DatePickerDialog方法中的参数传递并启用setMinDate方法。 现在检查以下代码

public void ChequeDate(View view) {
    Calendar calendar = Calendar.getInstance();
    int date = calendar.get(Calendar.DATE);
    int month = calendar.get(Calendar.MONTH);
    int year = calendar.get(Calendar.YEAR);
    DatePickerDialog dpd = new DatePickerDialog(PaymentHeader.this,
            new DatePickerDialog.OnDateSetListener() {
                @Override
                public void onDateSet(DatePicker view, int year,
                                      int monthOfYear, int dayOfMonth) {
                    if (year < mYear)
                        view.updateDate(mYear, mMonth, mDay);

                    if (monthOfYear < mMonth && year == mYear)
                        view.updateDate(mYear, mMonth, mDay);

                    if (dayOfMonth < mDay && year == mYear && monthOfYear == mMonth)
                        view.updateDate(mYear, mMonth, mDay);

                    if (monthOfYear < 9) {
                        if (dayOfMonth < 10) {
                            ChequeDateET.setText(year + "-0"
                                    + (monthOfYear + 1) + "-0" + dayOfMonth);
                        } else {
                            ChequeDateET.setText(year + "-0"
                                    + (monthOfYear + 1) + "-" + dayOfMonth);
                        }
                    } else {
                        if (dayOfMonth < 10) {
                            ChequeDateET.setText(year + "-"
                                    + (monthOfYear + 1) + "-0" + dayOfMonth);
                        } else {
                            ChequeDateET.setText(year + "-"
                                    + (monthOfYear + 1) + "-" + dayOfMonth);
                        }
                    }
                }
            }, year, month, date);
    dpd.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);
    dpd.show();
}

  ask by Eugene Santos translate from so

未解决问题?本站智能推荐:

3回复

在 DatePickerDialog 中禁用过去的日期

我想添加代码.getDatePicker().setMinDate(newDate.getTime() - (newDate.getTime()%(24*60*60*1000)))以禁用过去的日期,但突然无法使用.show() . 有人可以教我如何解决这种问题吗? 代码:
1回复

如果取消 DatePickerDialog,如何禁用 TimePickerDialog?

我目前正在制作一个待办事项列表应用程序。 我有一个提醒功能,如果用户单击它,则会显示 datepickerdialog 和 timepickerdialog。 但是,如果用户在 datepickerdialog 上按“取消”,那么我不想显示 timepickerdialog。 任何帮助,将不胜感激
1回复

DatePickerDialog 无法解析符号

所有写的DatePickerDialog都报错(无法解析符号),但是程序编译正确,LogCat中没有错误。 谁能解释为什么?
1回复

DatePickerDialog的setTitle无法正常工作

我一直在尝试使DatePickerDialog和TimePickerDialog在顶部显示标题,但到目前为止没有任何效果。 在显示日期/时间选择器之前,我尝试使用setTitle,还尝试了setCustomTitle。 这是我的Dialog类,用于显示基于此答案的日期选择器和时间选择器。 Dat
1回复

日期选择器-更改所选日期的Android

我使用日期选择器并将最大日期设置为2020年2月11日,而今天的日期是2019年2月12日。 我在单击日期选择器顶部的“年份”直接更改年份时遇到问题。 当日期选择器在当前日期(今天的日期:2019年2月12日)初始化时,如果我将年份更改为2020年2月,则日期选择器将显示2020年2月1
3回复

以编程方式在 Android 中更改 DatePicker 日历大小

我正在做一个 Android 应用程序,我必须显示一个 DatePickerDialog。 事实是,该应用程序将在具有智能屏幕的设备上运行,而日历不适合其中。 我希望日历更小,同时保持相同的比例。 看起来像这样 我尝试使用 DatePicker 上的ScaleY和ScaleX函数来调整它的大小,但
1回复

如何在DatePickerDialog Android中禁用今天日期之后的日期?

我想在DatePickerDialog中禁用今天日期的所有Next(after)日期。 我使用下面的代码来创建DatePickerDialog: 请建议我必须做什么来禁用datepicker对话框中的所有先前日期。
3回复

无法在AppCompatActivity中实现

这是我的代码,到目前为止我已经尝试过: 看来我无法改变 我无法将mycode更改为导入,从而扩展了该错误