【问题标题】:DatePicker spinner Lollipop remove day rowDatePicker 微调器 Lollipop 删除日行
【发布时间】:2015-03-25 13:07:46
【问题描述】:

我正在尝试删除微调器中的日行。我正在设置

android:calendarViewShown="false"
android:datePickerMode="spinner"

以便它使用微调器模式。在我像这样使用反射之前:

        Field[] fields = DatePicker.class.getDeclaredFields();
        try {
            String[] s = new String[] {"01","02","03","04","05","06","07","08","09","10","11","12"};
            for (Field field : fields) {
                field.setAccessible(true);
                if (TextUtils.equals(field.getName(), "mMonthSpinner")) {
                    NumberPicker monthPicker = (NumberPicker) field.get(this);
                    monthPicker.setDisplayedValues(s);
                }
                if (TextUtils.equals(field.getName(), "mShortMonths")) {
                    field.set(this, s);
                }
                if (TextUtils.equals(field.getName(), "mDaySpinner") || TextUtils.equals(field.getName(), "mDayPicker")) {
                    ((View) field.get(this)).setVisibility(GONE);
                }
            }
        }

但现在,有了 Lollipop,这些字段不再存在了。

知道如何解决这个问题吗?

【问题讨论】:

    标签: android android-5.0-lollipop android-datepicker


    【解决方案1】:

    目前还没有适用于 Android 5.0+ 的 DatePicker 解决方案。您可以尝试使用DateSlider 进行操作,这样您就不必编写自己的 DatePicker。如果你使用MonthYearDateSlider,你应该能够完成你需要的。

    【讨论】:

      【解决方案2】:

      我通过使用反射找到了解决方案。我不是它的粉丝,但好吧,它现在解决了它。我基本上找到了这个答案:Android: how to change the color of the datepicker divider?

      【讨论】:

      • 任何涉及反射的解决方案都可能导致您的应用 a) 崩溃或 b) 无法在随机设备或操作系统版本上运行。您永远不应该在生产应用中这样做。
      • 当然,这当然不应该在生产应用程序中完成。所以,我看到你是一名在谷歌工作的软件工程师,负责 Android 框架的 UI 工具包和 Material 主题(你似乎是解决这个问题的合适人选)。你能不能在我们都知道的基础上做一些不同的事情?谢谢@alanv
      • 框架小部件根本不支持它。此处建议使用自定义小部件的另一个解决方案是最佳方法。
      猜你喜欢
      • 2011-08-24
      • 1970-01-01
      • 1970-01-01
      • 2016-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-09
      • 1970-01-01
      相关资源
      最近更新 更多