如何解决如何在 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())
如果您需要自定义日期(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 举报,一经查实,本站将立刻删除。