Ahm*_*een 12 android android-datepicker kotlin material-components-android
如何向 MaterialDatePicker 添加约束以强制用户仅选择 2 个日期之间的日期?
val constraintBuilder = CalendarConstraints.Builder()
val materialRangeBuilder = MaterialDatePicker.Builder.datePicker()
materialRangeBuilder.setTitleText("Book Date")
materialRangeBuilder.setCalendarConstraints(constraintBuilder.build())
val materialRangePicker = materialRangeBuilder.build()
materialRangePicker.addOnPositiveButtonClickListener {
Timber.d("$it")
}
materialRangePicker.show(supportFragmentManager, "DATE_RANGE_PICKER")
Run Code Online (Sandbox Code Playgroud)
Gab*_*tti 20
您可以使用 aDateValidator来限制选择。
特别是,您可以使用内置验证器:
DateValidatorPointForward 允许从给定点向前进行日期DateValidatorPointBackward仅启用给定点之前的日期。就像是:
MaterialDatePicker.Builder<Long> builder = MaterialDatePicker.Builder.datePicker();
CalendarConstraints.Builder constraintsBuilderRange = new CalendarConstraints.Builder();
//....define min and max for example with LocalDateTime and ZonedDateTime or Calendar
CalendarConstraints.DateValidator dateValidatorMin = DateValidatorPointForward.from(min.getTimeInMillis());
CalendarConstraints.DateValidator dateValidatorMax = DateValidatorPointBackward.before(max.getTimeInMillis());
ArrayList<CalendarConstraints.DateValidator> listValidators =
new ArrayList<CalendarConstraints.DateValidator>();
listValidators.add(dateValidatorMin);
listValidators.add(dateValidatorMax);
CalendarConstraints.DateValidator validators = CompositeDateValidator.allOf(listValidators);
constraintsBuilderRange.setValidator(validators);
builder.setCalendarConstraints(constraintsBuilderRange.build());
MaterialDatePicker<Long> picker = builder.build();
picker.show(getSupportFragmentManager(), picker.toString());
Run Code Online (Sandbox Code Playgroud)
这是 kotlin 的版本:
private fun calendarConstraints(): CalendarConstraints {
val dateValidatorMin: DateValidator = DateValidatorPointForward.from(min.getTimeInMillis())
val dateValidatorMax: DateValidator = DateValidatorPointBackward.before(max.getTimeInMillis())
val listValidators = ArrayList<DateValidator>()
listValidators.apply {
add(dateValidatorMin)
add(dateValidatorMax)
}
val validators = CompositeDateValidator.allOf(listValidators)
return CalendarConstraints.Builder()
.setValidator(validators)
.build()
}
private fun setupCalendar() {
val materialDatePickerBuilder = MaterialDatePicker.Builder.datePicker().setCalendarConstraints(calendarConstraints())}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5854 次 |
| 最近记录: |