I have a custom linear layout which has DatePicker and TimePicker widgets in it. This is used as DateTime picker. I want to restrict t
The Material Components Library provides the MaterialDatePicker.
You can use a DateValidator to restrict the selections.
In particular you can use the built-in validators:
DateValidatorPointForward that enables dates from a given point forwardDateValidatorPointBackward that enables only dates before a given point.Something like:
MaterialDatePicker.Builder> builderRange = MaterialDatePicker.Builder.dateRangePicker();
CalendarConstraints.Builder constraintsBuilderRange = new CalendarConstraints.Builder();
//....define min and max for example with LocalDateTime and ZonedDateTime or Calendar
CalendarConstraints.DateValidator dateValidatorMin = DateValidatorPointForward.from(min.getTimeInMillis());
CalendarConstraints.DateValidator dateValidatorMax = DateValidatorPointBackward.before(max.getTimeInMillis());
ArrayList listValidators =
new ArrayList();
listValidators.add(dateValidatorMin);
listValidators.add(dateValidatorMax);
CalendarConstraints.DateValidator validators = CompositeDateValidator.allOf(listValidators);
constraintsBuilderRange.setValidator(validators);
builderRange.setCalendarConstraints(constraintsBuilderRange.build());
MaterialDatePicker> pickerRange = builderRange.build();
pickerRange.show(getSupportFragmentManager(), pickerRange.toString());