У меня странная визуальная ошибка в новом DatePickerDialog виджетов Android.Мне нужно установить диапазон дат в диалоговом окне как 1 месяц, но он также не должен выбирать дату из будущего.Логика работает, как и ожидалось, но визуальные эффекты имеют какую-то ошибку.Вот как это выглядит:
Обратите внимание, что «5» отключен, я не могу выбрать его.Тем не менее, это выглядит как выбираемый.Что я должен сделать, чтобы решить эту проблему?Любая помощь приветствуется, спасибо.(Сегодняшний день месяца также равен 5, я предполагаю, что эта ошибка возникла оттуда.)
Редактировать: это то, как я создаю диалог.
@SuppressLint("ValidFragment")
public static class DateDialog extends DialogFragment implements DatePickerDialog.OnDateSetListener
{
private static final long MONTH = 2592000000L;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
// Use previous selected date in the date picker
final Calendar c = Calendar.getInstance();
c.setTimeInMillis(DateUtils.getAtTimeTimestamp(startDate));
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dialog = new DatePickerDialog(getActivity(), R.style.AppTheme_DialogTheme, this, year, month, day);
Date date = new Date(); // get current time
// get target maximum date which can be 1 month above
long targetDateTime = DateUtils.getAtTimeTimestamp(startDate) + MONTH;
if (date.getTime() < targetDateTime)
dialog.getDatePicker().setMaxDate(date.getTime()); // now because it can't be future
else
dialog.getDatePicker().setMaxDate(targetDateTime); // should also be one month above from the start date.
dialog.getDatePicker().setMinDate(DateUtils.getAtTimeTimestamp(startDate));
return dialog;
}
@Override
public void onDateSet(DatePicker datePicker, int i, int i1, int i2)
{
// logic between date selections
}
}
DateUtils.getAtTimeTimestamp (String date) в основном преобразует строку в длинное целое число, то есть время в миллисекундах.