如何防止Android Material DatePickerDialog选择未来日期

如何防止Android Material DatePickerDialog选择未来日期,android,Android,我正在尝试创建一个DatePickerDialog,它不允许用户在将来选择某些内容。我看到很多解决方案都说我应该使用 setMaxDateSystem.currentTimeMillis;但这不适用于“材质”对话框。它确实阻止用户选择当前月份以外的日期,但是本月的未来日期只是灰显,但仍然可以选择。请参阅下面的代码 DatePickerDialog dialog = new DatePickerDialog(rootView.getContext(), new DatePickerDialog.O

我正在尝试创建一个DatePickerDialog,它不允许用户在将来选择某些内容。我看到很多解决方案都说我应该使用 setMaxDateSystem.currentTimeMillis;但这不适用于“材质”对话框。它确实阻止用户选择当前月份以外的日期,但是本月的未来日期只是灰显,但仍然可以选择。请参阅下面的代码

DatePickerDialog dialog = new DatePickerDialog(rootView.getContext(), new DatePickerDialog.OnDateSetListener() {
    @Override
    public void onDateSet(final DatePicker datePicker, final int year, final int monthOfYear, final int dayOfMonth) {
        dateTime = dateTime.withYear(year);
        dateTime = dateTime.withMonthOfYear(monthOfYear + 1);
        dateTime = dateTime.withDayOfMonth(dayOfMonth);

        if (dateTime.isAfter(DateTime.now())) {
            dateTime = new DateTime();
            Snackbar.make(rootView, R.string.future_date_not_allowed, Snackbar.LENGTH_LONG).show();
        }

        setDateTime(dateTime);
    }
}, dateTime.getYear(), dateTime.getMonthOfYear() - 1, dateTime.getDayOfMonth());

dialog.getDatePicker().setMaxDate(System.currentTimeMillis());
dialog.show();
正如您可能看到的,我们使用Jodatime来减轻一些复杂性。现在,如果用户选择了日期,我将进行检查,即使我已经使用setMaxDate指定了该日期,但它确实不是将来的日期

在下图中,你可以看到今天是7月23日,我选择了7月29日。如果我按ok,我的SnackBar就会显示出来。比今天晚的所有内容都是灰色的,但仍然可以选择。。。。甚至不要让我开始计时

TL;博士


如何实际阻止用户选择未来日期?

您可以使用此选项来阻止未来日期

mDatePicker.setMaxDate(System.currentTimeMillis());

我可以建议您避免使用系统日期和时间选择器吗?他们与三星棒棒糖设备有问题,缺乏功能需要您编写额外的代码。我最喜欢的lib:到目前为止,这个问题有什么解决方案吗??