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

Changing NumberPicker divider color not working with Android Api 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;
      }
    }
}

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

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

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

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

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

并在 xml 中:

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

并在 java 中设置颜色:

numberPicker.setDividerColor(Color);