我希望日期选择器仅显示月份和年份。我已经自定义了日期选择器来执行此操作,即从选择器中删除“日”字段,但在 Android Lollipop 中我正在获取带有日、月和年的选择器。以下是我的一段代码。请帮助我了解问题所在。提前致谢。
try {
Field f[] = mDatePicker.getClass().getDeclaredFields();
for (Field field : f) {
if (field.getName().equals("mDaySpinner") || field.getName().equals("mDayPicker")) {
field.setAccessible(true);
Object dayPicker = new Object();
dayPicker = field.get(mDatePicker);
((View) dayPicker).setVisibility(View.GONE);
}
}
} catch (SecurityException e) {
} catch (IllegalArgumentException e) {
} catch (IllegalAccessException e) {
}
最佳答案
使用反射来查找和隐藏 UI 元素并不是一个很好的做法。在您的情况下,它停止在 Lollipop 中工作,因为 mDaySpinner
现在包含在内部私有(private)静态 DatePickerSpinngerDelegate
中DatePicker
中的类类。
我建议通过 View 层次结构来查找和隐藏日期微调器元素。我编写了以下适用于 Lollipop 的代码:
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
int daySpinnerId = Resources.getSystem().getIdentifier("day", "id", "android");
if (daySpinnerId != 0) {
View daySpinner = datePicker.findViewById(daySpinnerId);
if (daySpinner != null) {
daySpinner.setVisibility(View.GONE);
}
}
}
关于android - Android Lollipop 中的自定义日期选择器对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26460682/