//Material Date Picker
private val calendar = Calendar.getInstance()
private val constraintsBuilder = CalendarConstraints.Builder().setStart(calendar.timeInMillis)
private val builder = MaterialDatePicker.Builder.datePicker()
private val picker = builder
.setSelection(calendar.timeInMillis)
.setInputMode(MaterialDatePicker.INPUT_MODE_CALENDAR)
.setCalendarConstraints(constraintsBuilder.build())
.build()
I am using above code to open calendar setSelection method select current date and setStart only works for current month So i am unable to select previous month dates but i can still select past dates of current month.
If any can help me out. Please let me know. Thanks.
You can build your own DateValidator
or you can just use the DateValidatorPointForward
provided by the library.
Something like:
//Returns a DateValidator which enables days from {@code point}, in
//UTC milliseconds, forward
CalendarConstraints.DateValidator dateValidator = DateValidatorPointForward.from(yourDate);
constraintsBuilder.setValidator(dateValidator);
You need to create your own DateValidator
for this. A date being enabled/disabled depends on whether DateValidator.isValid()
returns true or false
@Parcelize
class FutureDateValidator : CalendarConstraints.DateValidator {
override fun isValid(date: Long): Boolean {
return date > System.currentTimeMillis()
}
}
And then use this validator as:
CalendarConstraints.Builder()
.setValidator(FutureDateValidator())
.build()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With