当前位置: 首页 > 知识库问答 >
问题:

如何在MaterialDatePicker中禁用过去的日期?

万俟高峻
2023-03-14
 //Material Date Picker
private val calendar = Calendar.getInstance()
private val constraintsBuilder = CalendarConstraints.Builder().setStart(calendar.timeInMillis)
private val builder = MaterialDatePicker.Builder.datePicker()
private val picker = builder
    .setSelection(calendar.timeInMillis)
    .setInputMode(MaterialDatePicker.INPUT_MODE_CALENDAR)
    .setCalendarConstraints(constraintsBuilder.build())
    .build()

我使用上述代码打开日历setSelection方法选择当前日期,setStart仅适用于当前月份,因此我无法选择上个月的日期,但我仍然可以选择当前月份的过去日期。

如果有谁能帮我。请让我知道。谢谢。

共有2个答案

郑功
2023-03-14

您需要为此创建自己的DateValidator。启用/禁用的日期取决于是否启用日期验证程序。isValid()返回true或false

@Parcelize
class FutureDateValidator : CalendarConstraints.DateValidator {
    override fun isValid(date: Long): Boolean {
        return date > System.currentTimeMillis()
    }
}

然后将此验证器用作:

CalendarConstraints.Builder()
    .setValidator(FutureDateValidator())
    .build()
巫马星雨
2023-03-14

您可以构建自己的DateValidator,也可以使用库提供的DateValidatorPointForward

类似的东西:

//Returns a DateValidator which enables days from {@code point}, in 
//UTC milliseconds, forward
CalendarConstraints.DateValidator dateValidator = DateValidatorPointForward.from(yourDate);
constraintsBuilder.setValidator(dateValidator);
 类似资料:
  • 日期选择器应该使用哪个类来仅使用未来的日期? 注意:代码是由其他人编写的。上面的代码不允许输入未来日期,或者您可以在日历上单击“禁用未来日期”。我希望代码禁用过去的日期和显示未来的日期年只。我无法了解这些类(datepicker,maxDateToday)是如何在这里工作的;在CSS中找不到它。我不知道上面是否由JQuery执行;如果是,则我无法搜索相同的内容。如果这些类是预定义的,那么你能帮我找

  • 问题内容: 我的心脏必须深入到减去两个日期以计算出天数后,内部开始流血: .NET或你命名的任何现代语言中只有两行代码。 这对Java不好吗?还是我应该知道一个隐藏的方法? 可以在util中使用Date类而不使用GregorianCalendar吗?如果是这样,我是否应该提防像1970年这样的细微事情? 谢谢 问题答案: 这确实是标准Java API中最大的史诗失败之一。有一点耐心,那么你将获得J

  • 我没有使用任何日期选择器仍然代码工作正常。我已经选择了输入类型日期和一切工作正常。现在我想禁用未来的日期。我该怎么做呢? 编辑:通过其他方式解决问题 我用过日期选择器 它是如此容易实现。只需安装npm包 同时安装力矩传感器 导入库 在构造函数中 dateChange函数 最后是渲染函数 这里使用maxDate函数来禁用未来的日期。 资料来源:https://www.npmjs.com/packag

  • 我使用html5日期选择器,如[输入类型="日期"], 我只需要增加当前日期1.我的意思是只显示明天的日期和未来的日期,当前日期和以前的日期想要去禁用状态只显示未来的日期... 任何人请帮帮我。。 这是我的试用代码。 小提琴:代码在这里...

  • 我刚刚安装了amsul日期选择器,但我无法弄清楚如何禁用日期?例如,如果我希望日历显示今天的日期和1年前的未来日期。例如:2019年5月2日- 此外,我正在尝试从- 谢谢 Amsul:https://amsul.ca/pickadate.js/

  • 如何向MaterialDatePicker添加约束以强制用户选择仅介于两个日期之间的日期?