Ank*_*and 2 android android-datepicker kotlin material-components-android
我正在尝试使用 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
}
Run Code Online (Sandbox Code Playgroud)
要禁用未来日期,只需使用DateValidatorPointBackward图书馆提供的。
与今天:
val constraintsBuilder =
CalendarConstraints.Builder()
.setValidator(
DateValidatorPointBackward.now())
Run Code Online (Sandbox Code Playgroud)
如果您需要自定义日期(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))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3979 次 |
| 最近记录: |