如何禁用 MaterialDatePicker 中的过去日期?
How to disable past dates in MaterialDatePicker?
//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 方法 select 当前日期和 setStart 仅适用于当前月份所以我无法 select 前一个月的日期但是 我可以仍然 select 本月过去的日期。
有的话可以帮帮我。请告诉我。谢谢
您需要为此创建自己的 DateValidator
。 enabled/disabled 的日期取决于 DateValidator.isValid()
returns 是真还是假
@Parcelize
class FutureDateValidator : CalendarConstraints.DateValidator {
override fun isValid(date: Long): Boolean {
return date > System.currentTimeMillis()
}
}
然后将此验证器用作:
CalendarConstraints.Builder()
.setValidator(FutureDateValidator())
.build()
您可以构建自己的 DateValidator
,也可以只使用图书馆提供的 DateValidatorPointForward
。
类似于:
//Returns a DateValidator which enables days from {@code point}, in
//UTC milliseconds, forward
CalendarConstraints.DateValidator dateValidator = DateValidatorPointForward.from(yourDate);
constraintsBuilder.setValidator(dateValidator);
//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 方法 select 当前日期和 setStart 仅适用于当前月份所以我无法 select 前一个月的日期但是 我可以仍然 select 本月过去的日期。
有的话可以帮帮我。请告诉我。谢谢
您需要为此创建自己的 DateValidator
。 enabled/disabled 的日期取决于 DateValidator.isValid()
returns 是真还是假
@Parcelize
class FutureDateValidator : CalendarConstraints.DateValidator {
override fun isValid(date: Long): Boolean {
return date > System.currentTimeMillis()
}
}
然后将此验证器用作:
CalendarConstraints.Builder()
.setValidator(FutureDateValidator())
.build()
您可以构建自己的 DateValidator
,也可以只使用图书馆提供的 DateValidatorPointForward
。
类似于:
//Returns a DateValidator which enables days from {@code point}, in
//UTC milliseconds, forward
CalendarConstraints.DateValidator dateValidator = DateValidatorPointForward.from(yourDate);
constraintsBuilder.setValidator(dateValidator);