Search code examples
androidkotlindatepickermaterial-design

How prevent date range picker to select same dates


I'm using Material Date Range picker and I want to prevent selecting same dates in range for e.g when start date is 11-09-2022 end date shouldn't be same 11-09-2022 when user tries to select start date for the second time I want to reset selection. is it possible to achieve such behaviour ? I read documentation but nothing was helpful for me.

private fun showDateRangePicker() {
        val calendarConstraints = CalendarConstraints.Builder()
        calendarConstraints.setValidator(DateValidatorPointBackward.now())

val dateRangePicker = MaterialDatePicker.Builder.dateRangePicker()
            .setTitleText(getString(R.string.date_picker_title))
            .setTheme(R.style.MaterialCalendarTheme_RangeFill)
            .setCalendarConstraints(calendarConstraints.build())
            .setSelection(setSelection)
            .build()

        dateRangePicker.show(
            parentFragmentManager,
            "Tag"
        )

Solution


  • You can try to use the following approach, but be careful, because it is Restricted API ("@RestrictTo({Scope.LIBRARY_GROUP})")

         val picker = MaterialDatePicker.Builder
            .customDatePicker<Pair<Long?, Long?>>(
                object : RangeDateSelector() {
                    override fun select(selection: Long) {
                        if (selection == getSelection().first) return
                        super.select(selection)
                    }
                }).build()