NumberPicker材质样式自定义选择分隔符

时间:2017-10-10 05:24:29

标签: android material-design numberpicker android-number-picker

我想自定义数字选择器选择分频器。

number picker selection divider

我创建了自定义drawable,用于数字选择器选择分隔符。

我创建了继承数字选择器材质样式的自定义材质样式。

<style name="MyNumberPickerTheme" parent="@android:style/Widget.Material.NumberPicker">
    <item name="colorControlNormal ">#2e7d32</item>
    <item name="android:background">#69f0ae</item>
    <item name="selectionDivider">@drawable/my_number_picker_divider</item>
</style>

但无法识别selectionDivider属性。如何将自定义drawable添加到数字选择器材质样式以设置自定义选择分隔符?

1 个答案:

答案 0 :(得分:1)

似乎没有简单的方法来实现这一目标。在这种情况下,This StackOverflow solution是唯一足够好的解决方案。 为了其他读者,我会在这里复制/粘贴答案。

private void setDividerColor(NumberPicker picker, Drawable customDrawable) {

    java.lang.reflect.Field[] pickerFields = NumberPicker.class.getDeclaredFields();
    for (java.lang.reflect.Field pf : pickerFields) {
        if (pf.getName().equals("mSelectionDivider")) {
            pf.setAccessible(true);
            try {
                pf.set(picker, customDrawable);
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (Resources.NotFoundException e) {
                e.printStackTrace();
            }
            catch (IllegalAccessException e) {
                e.printStackTrace();
            }
            break;
        }
    }
}

现在在代码的某处,您可以调用 setDividerColor(picker,drawableObject)来设置分隔符的颜色。