I'm new to android. Now, I want to set the calendar range just one month since today. I've tried this solution but I still don't get how to make it dynamic. And, I'm using Material Date Picker. Here's my code:
private static Calendar getClearedUTC() {
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
calendar.clear();
return calendar;
}
private void initSetting() {
today = MaterialDatePicker.todayInUtcMilliseconds();
Calendar calendar = getClearedUTC();
calendar.roll(Calendar.MONTH, -1);
monthBefore = calendar.getTimeInMillis();
todayPair = new Pair<>(today, today);
mothBeforePair = new Pair<>(monthBefore, monthBefore);
}
void onGroupClick(){
initSetting();
MaterialDatePicker.Builder<Pair<Long, Long>> builder = MaterialDatePicker.Builder.dateRangePicker();
builder.setTitleText("Pilih tanggal");
builder.setSelection(todayPair);
// builder.setCalendarConstraints(limitRange().build());
CalendarConstraints.DateValidator dateValidator = DateValidatorPointForward.from(today);
final MaterialDatePicker materialDatePicker = builder.build();
dateBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
materialDatePicker.show(getSupportFragmentManager(), "DATE_PICKER");
}
});
materialDatePicker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener() {
@Override
public void onPositiveButtonClick(Object selection) {
dateTV.setText(materialDatePicker.getHeaderText());
}
});
}
Can someone help me?
Get today with:
Calendar.getInstance()
Add one month with:
maxDate.add(Calendar.DAY_OF_MONTH, 30)
Subtract one month with:
maxDate.add(Calendar.DAY_OF_MONTH, -30)
And validate the range with min and max values with
RangeValidator
Usage: