如何在MaterialDatePicker中打开之前选择的日期?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在MaterialDatePicker中打开之前选择的日期?相关的知识,希望对你有一定的参考价值。
这是我正在使用的代码。
val picker = builder .setTitleText(getText(R.string.select_start_date_and_end_date)) .setSelection(Pair((selectedStartDate ?: calendar.timeInMillis), (selectedEndDate ?: calendar.timeInMillis))) .setTheme(AppUtils.resolveOrThrow(requireContext(), R.attr.materialCalendarTheme)) .setInputMode(MaterialDatePicker.INPUT_MODE_CALENDAR) .setCalendarConstraints(constraintsBuilder) .build() picker.show(parentFragmentManager, picker.toString())
当点击正按钮时,我将数据存储为长值,就像这样。
picker.addOnPositiveButtonClickListener { selectedStartDate = it.first ?: 0 selectedEndDate = it.second ?: 0 }
这里selectedStartDate和selectedEndDate是长变量,但是日历没有打开之前选择的日期。
答案
我找到了答案。
val dateValidator: CalendarConstraints.DateValidator = DateValidatorPointForward.now()
val builder = MaterialDatePicker.Builder.dateRangePicker()
val constraintsBuilder =
CalendarConstraints.Builder().setStart(calendar.timeInMillis)
.setOpenAt((selectedStartDate ?: calendar.timeInMillis))
.setValidator(dateValidator).build()
val picker = builder
.setTitleText(getText(R.string.select_start_date_and_end_date))
.setSelection(
Pair(
(selectedStartDate ?: calendar.timeInMillis),
(selectedEndDate ?: calendar.timeInMillis)
)
)
.setTheme(AppUtils.resolveOrThrow(requireContext(), R.attr.materialCalendarTheme))
.setInputMode(MaterialDatePicker.INPUT_MODE_CALENDAR)
.setCalendarConstraints(constraintsBuilder)
.build()
picker.show(parentFragmentManager, picker.toString())
picker.addOnPositiveButtonClickListener {
selectedStartDate = it.first ?: 0
selectedEndDate = it.second ?: 0
setStartAndEndDate(selectedStartDate, selectedEndDate)
}
- 有一个方法openAt()。谢谢。
以上是关于如何在MaterialDatePicker中打开之前选择的日期?的主要内容,如果未能解决你的问题,请参考以下文章
MaterialDatePicker 选择后返回不正确的日期
MaterialDatePicker,选择结束日期后应用程序崩溃