Здравствуйте, помогите пожалуйста, уже несколько дней пытаюсь добавить в своё приложение dialog MaterialDatePicker, по умолчанию он имеет только методы построения календаря, в котором можно выбрать либо одну дату, либо какой-либо период, но мне нужно, чтобы он имел возможность выбора нескольких дат. Например как показано на картинке
Может есть какой-то способ переопредения какого-либо метода который будет иметь такую возможность. Всё перерыл не могу никак найти ответ.
Мой код:
public void weekends(Long startV, Long endV) {
//создаём календарь
Calendar calendarWeekends = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
calendarWeekends.clear();
calendarWeekends.setTimeInMillis(startV);
//Начальный месяц для Валидатора
calendarWeekends.set(Calendar.YEAR, 2015);
calendarWeekends.set(Calendar.MONTH, 7);
long startPeriod = calendarWeekends.getTimeInMillis();
//Месяц окончания для Валидатора
calendarWeekends.set(Calendar.YEAR, 2020);
calendarWeekends.set(Calendar.MONTH, Calendar.DECEMBER);
long endPeriod = calendarWeekends.getTimeInMillis();
//устанавливаем диапазон указанных выше значений
CalendarConstraints.Builder constraintsBuilderWeekends = new CalendarConstraints.Builder();
constraintsBuilderWeekends.setStart(startPeriod);
constraintsBuilderWeekends.setEnd(endPeriod);
constraintsBuilderWeekends.setValidator(new RangeValidator(startV, endV));
constraintsBuilderWeekends.setOpenAt(startV);
MaterialDatePicker.Builder builderWeekends = MaterialDatePicker.Builder.datePicker();
builderWeekends.setCalendarConstraints(constraintsBuilderWeekends.build());
builderWeekends.setTitleText("Отметьте выходные дни");
final MaterialDatePicker materialDatePickerWeekends = builderWeekends.build();
textInputEditWeekends.setInputType(InputType.TYPE_NULL);
textInputEditWeekends.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
materialDatePickerWeekends.show(getSupportFragmentManager(), "DATE_PICKER");
}
});
textInputEditWeekends.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
materialDatePickerWeekends.show(getSupportFragmentManager(), "DATE_PICKER");
}
}
});
materialDatePickerWeekends.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener() {
@Override
public void onPositiveButtonClick(Object selection) {
DateFormat dateFormat = new SimpleDateFormat("d MMMM");
textInputEditWeekends.setText("Выходные: " + dateFormat.format(selection));
textInputEditWeekends.setTextColor(Color.rgb(0, 0, 0));
}
});
}
}
class RangeValidator implements CalendarConstraints.DateValidator {
long minDate, maxDate;
RangeValidator(long minDate, long maxDate) {
this.minDate = minDate;
this.maxDate = maxDate;
}
RangeValidator(Parcel parcel) {
minDate = parcel.readLong();
maxDate = parcel.readLong();
}
@Override
public boolean isValid(long date) {
return !(minDate > date || maxDate < date);
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeLong(minDate);
dest.writeLong(maxDate);
}
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
@Override
public RangeValidator createFromParcel(Parcel parcel) {
return new RangeValidator(parcel);
}
@Override
public RangeValidator[] newArray(int size) {
return new RangeValidator[size];
}
};