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

标签 android datepicker android-5.0-lollipop custom-datetimepicker

我希望日期选择器仅显示月份和年份。我已经自定义了日期选择器来执行此操作,即从选择器中删除“日”字段,但在 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)静态 DatePickerSpinngerDelegateDatePicker 中的类类。

我建议通过 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/

相关文章:

java - 如何使用 Retrofit2 下载文件?

android - 如何在 ViewPager 中实现按钮?

javascript - 使用 v-date-picker 处理 mySQL 和 V-Calendar 之间日期的最佳实践

android - 在除 android L 之外的所有 android 版本上获取 TypeNotPresentException 后跟 ClassNotFoundException 或 NoClassDefFoundError

android - 谷歌 GCM android 崩溃(java.lang.NoClassDefFoundError : com. google.android.gms.R$string)

android - 用户正确登录后在应用程序中使用 JWT

Android Studio 3.1 - Logcat 输出已损坏

php - 如何从日期选择器输入字段中的日期选择器检索值(使用 PHP MySQL)?

JavaFX JFXDatePicker 为特定日期设置颜色

android - 如何使用 MediaProjectionManager 完成屏幕捕获?