更改 NumberPicker 分隔线颜色 [英] Changing NumberPicker divider color

查看:35
本文介绍了更改 NumberPicker 分隔线颜色的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在最近的 android 版本中, 但在运行时出现错误(见下文)由于库中的某些代码试图访问不存在的资源 ID.

android.content.res.Resources$NotFoundException: 资源 ID #0x0在 android.content.res.Resources.getValue(Resources.java:1123)在 android.content.res.Resources.loadXmlResourceParser(Resources.java:2309)在 android.content.res.Resources.getLayout(Resources.java:939)在 android.view.LayoutInflater.inflate(LayoutInflater.java:395)在 net.simonvt.numberpicker.NumberPicker.(NumberPicker.java:635)在 net.simonvt.numberpicker.NumberPicker.(NumberPicker.java:560)在 net.simonvt.numberpicker.NumberPicker.(NumberPicker.java:550)

解决方案

基于此 (https://stackoverflow.com/a/20291416/2915480 虽然是关于 DatePicker)有几种方法:

  1. 在没有 mSelectionDivider 及其附属公司的情况下编写您自己的 NumberPicker,或者使用由 Vikram 反向移植.最后一种情况:
  2. github
  3. 从 lib 下载
  4. 更改 res/drawable-xxx/np_numberpicker_selection_divider.9.png 中的 drawable:

  • 透明(或其他).9.png* 在 res/drawable 中创建 np_numberpicker_selection_divider.xml 形状线资源(使用 0dp 高度或透明颜色).

  1. OR 从 NumberPicker.java这里

  2. 使用反射访问private final field mSelectionDivider(详情:https://github.com/android/platform_frameworks_base/blob/master/core/java/android/widget/NumberPicker.java) - 例如请参阅此处的修改.我使用了反射,但这不是最好的解决方案.

  3. 在 API 21+ 中使用主题覆盖数字选择器的分隔线颜色:?attr/colorControlNormal 确定材料数字选择器中分隔线的颜色,因此在您的小部件主题中更改此颜色会做的伎俩,例如对于日期选择器: