更改 NumberPicker 分隔线颜色不适用于 Android Api 29+

Posted

技术标签:

【中文标题】更改 NumberPicker 分隔线颜色不适用于 Android Api 29+【英文标题】:Changing NumberPicker divider color not working with Android Api 29+ 【发布时间】:2021-03-14 13:24:29 【问题描述】:

我正在使用以下代码更改NumberPicker 分隔线颜色, 此代码不适用于 android Api 29+,因为 UnsupportedAppUsage mSelectionDivider

private static void setDividerColor(NumberPicker picker, int color) 
    java.lang.reflect.Field[] pickerFields = NumberPicker.class.getDeclaredFields();
    for (java.lang.reflect.Field pf : pickerFields) 
      if (pf.getName().equals("mSelectionDivider")) 
        pf.setAccessible(true);
        try 
          ColorDrawable colorDrawable = new ColorDrawable(color);
          pf.set(picker, colorDrawable);
         catch (IllegalArgumentException | Resources.NotFoundException | IllegalAccessException e) 
          e.printStackTrace();
        
        break;
      
    

【问题讨论】:

创建自己的小部件,而不是尝试使用反射来修改框架小部件。 【参考方案1】:

您可以像这样使用number-picker 库:

implementation 'com.shawnlin:number-picker:2.4.11'

在xml中:

<com.shawnlin.numberpicker.NumberPicker
    android:id="@+id/color_1"
    android:layout_
    android:layout_
    app:np_dividerColor="#000000"/>

在java中设置颜色:

numberPicker.setDividerColor(Color);

【讨论】:

【参考方案2】:

将此样式设置为 android:theme` 用于数字选择器:

<style name="AppTheme.NumberPickerTheme">
        <item name="android:textColorSecondary">@color/yourDividerColor</item>
    </style>

<NumberPicker
        ...
        android:theme="@style/AppTheme.NumberPickerTheme"
       />

【讨论】:

以上是关于更改 NumberPicker 分隔线颜色不适用于 Android Api 29+的主要内容,如果未能解决你的问题,请参考以下文章

更改 android numberpicker 分隔线颜色

NumberPicker 不适用于键盘

更改 NumberPicker 的文本颜色

Android numberpicker里的线可以改颜色吗

Android的NumberPicker那两天蓝色的线如何更换颜色

AsymmetricGridView 更改垂直分隔线颜色