Встань и сияй, говорят они. Сегодня утром я рад сообщить всем, кто читает это, что я нашел решение для этого. Надеюсь, это кому-нибудь поможет.
- Создание компоновщика ограничений.
CalendarConstraints.Builder calendarConstraintsBuilder = new CalendarConstraints.Builder ();
Получение времени в миллисекундах из экземпляра календаря.
long openAt = calendar.getTimeInMillis ();
Установить openAt в Построитель ограничений календаря со временем, полученным в миллисекундах.
calendarConstraintsBuilder.setOpenAt (openAt);
Наконец, установите calendarConstraintsBuilder.constraints в экземпляр MaterialDatePicker.Builder.
builder.setCalendarConstraints (calendarConstraintsBuilder.build ());
Я знаю, что при переходе к определение setOpenAt (длинный месяц) снова вводит людей в заблуждение, и в качестве параметра они передают только месяц, публикуя c Builder setOpenAt (длинный месяц). Но чтение документации кода поможет вам понять, что вам нужно пройти время в миллисекундах. Весь код выглядит следующим образом.
MaterialDatePicker.Builder<Long> builder = MaterialDatePicker.Builder.datePicker();
CalendarConstraints.Builder calendarConstraintsBuilder = new CalendarConstraints.Builder();
builder.setTitleText(R.string.title_pick_a_date);
if (dateDF == null) {
builder.setSelection(Calendar.getInstance().getTimeInMillis());
} else {
Calendar calendar = Calendar.getInstance();
calendar.setTime(dateDF);
long openAt = calendar.getTimeInMillis();
calendarConstraintsBuilder.setOpenAt(openAt);
builder.setCalendarConstraints(calendarConstraintsBuilder.build());
builder.setSelection(calendar.getTimeInMillis());
}
MaterialDatePicker<Long> picker = builder.build();
picker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener<Long>() {
@Override
public void onPositiveButtonClick(Long selection) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(selection);
calendar.setTimeZone(calendar.getTimeZone());
int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
int month = calendar.get(Calendar.MONTH);
int year = calendar.get(Calendar.YEAR);
String dateSF = dayOfMonth + "/" + (month + 1) + "/" + year;
calendar.set(year, month, dayOfMonth);
binding.layoutContentFeedFormulaDetails.tIeDate.setText(dateSF);
binding.layoutContentFeedFormulaDetails.tIeDate.setTag(calendar.getTime());
}
});
binding.layoutContentFeedFormulaDetails.btnDatePicker.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
picker.show(getSupportFragmentManager(), picker.toString());
}
});