Android Lollipop中的自定义日期选择器对话框

sra*_*ara 5 android datepicker custom-datetimepicker android-5.0-lollipop

我希望日期选择器只显示月份和年份.我已经定制了日期选择器,即从选择器中删除"day"字段,但在Android Lollipop Am中获取日,月和年的选择器.以下是我的一段代码.请帮我知道这个问题.提前致谢.

    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) {
    }
Run Code Online (Sandbox Code Playgroud)

小智 10

使用反射来查找和隐藏UI元素并不是一个很好的实践.在你的情况下,它停止在棒棒糖中工作,因为mDaySpinner它现在包含在DatePickerSpinngerDelegate类中的内部私有静态类中DatePicker.

我建议通过视图层次结构来查找和隐藏日期微调器元素.我编写了以下在棒棒糖中运行的代码:

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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)