如何在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 获取选定的日期

MaterialDatePicker 获取选定的日期

MaterialDatePicker,选择结束日期后应用程序崩溃

MaterialDatePicker 显示当前日期而不是需要

如何在 YYYY.MM-DD 中更改 Material Datepicker 的格式