Search code examples
androiddividernumberpicker

Changing NumberPicker divider color not working with Android Api 29+


I am using below code to change NumberPicker divider color, this code not working with Android Api 29+ because 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;
      }
    }
}

Solution

  • You can use number-picker library like this:

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

    and in xml:

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

    and in java set color:

    numberPicker.setDividerColor(Color);