Я пытаюсь показать только поля дня месяца и месяца в DatePicker в AlertDialog. В предыдущих API из API 21 я могу сделать это с помощью кода ниже. Но когда я пытаюсь сделать это в API21 +, «getDeclaredFields ()» даже не возвращает, как поля «mYearPicker» или «mYearSpinner». Кто-нибудь знает, как Могу я просто показать поля «День» и «Месяц»? И я даже не знаю, что такое поле «116».
Мой код такой:
final DatePicker datePickerStart = new DatePicker(new ContextThemeWrapper(getActivity(), android.R.style.Theme_Holo_Light_Dialog_NoActionBar));
datePickerStart .setCalendarViewShown(false);
datePickerStart .setSpinnersShown(true);
try {
Field f[] = datePickerStart .getClass().getDeclaredFields();
for (Field field : f) {
if (field.getName().equals("mYearPicker")|| field.getName().equals("mYearSpinner")) {
field.setAccessible(true);
Object yearPicker = new Object();
yearPicker = field.get(datePickerStart);
((View) yearPicker).setVisibility(View.GONE);
}
}
}
catch (Exception e) {
Log.e("ERROR", e.getMessage());
}
Должно выглядеть так: До API 21
Выглядит так: API 21+
Любая идея?
DatePicker
и не модифицировать его по своему усмотрению? Или почему бы не использовать стороннюю библиотеку? Что заставляет вас думать, что этот подход будет работать на тысячах моделей устройств Android, учитывая, что производители устройств могут изменять внутреннее устройство Android, не говоря уже о Google с новыми версиями Android? - person CommonsWare   schedule 10.05.2016