微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Android MaterialDatePicker 中禁用未来日期?

如何解决如何在 Android MaterialDatePicker 中禁用未来日期?

我正在尝试使用 MaterialDatePicker 创建一个简单的 DatePicker,其中未来日期被禁用。我尝试了其他类似 StackOverflow 问题的几个答案,但没有奏效。到目前为止,这是我的代码:-

val datePicker = MaterialDatePicker.Builder.datePicker().apply {
        setTitleText(getString(R.string.label_select_dob))
        setCalendarConstraints(limitRange().build())
    }.build()

 private fun limitRange(): CalendarConstraints.Builder {
    val calendarStart: Calendar = Calendar.getInstance()
    val calendarEnd: Calendar = Calendar.getInstance()
    val year = 1900
    val startMonth = 1
    val startDate = 1
    calendarStart.set(year,startMonth,startDate)
    calendarEnd.set(2021,3,27)
    val minDate: Long = calendarStart.timeInMillis
    val maxDate: Long = calendarEnd.timeInMillis

    val constraintsBuilder = CalendarConstraints.Builder()
    val validators: ArrayList<CalendarConstraints.DateValidator> = ArrayList()
    validators.add(DateValidatorPointForward.from(minDate))
    validators.add(DateValidatorPointBackward.before(maxDate))
    constraintsBuilder.setValidator(CompositeDateValidator.allOf(validators))

    return constraintsBuilder
}

解决方法

要禁用未来日期,只需使用图书馆提供的 DateValidatorPointBackward

今天:

val constraintsBuilder =
    CalendarConstraints.Builder()
        .setValidator(
            DateValidatorPointBackward.now())

enter image description here

如果您需要自定义日期(4 月 1 日之后的所有日期):

    val calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"))
    calendar[Calendar.DAY_OF_MONTH] = 1
    calendar[Calendar.MONTH] = Calendar.APRIL
    val april = calendar.timeInMillis

    val constraintsBuilder =
        CalendarConstraints.Builder()
            .setValidator(
                DateValidatorPointBackward.before(april))
,
val constraintsBuilder =
            CalendarConstraints.Builder()
                .setValidator(DateValidatorPointBackward.now())

val dataPicker = MaterialDatePicker.Builder.datePicker().apply {
            setTitleText("Select Previous Dates")
            setCalendarConstraints(constraintsBuilder.build())
        }.build()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?