1

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

数字选择器选择分隔符

我创建了用于数字选择器选择分隔符的自定义可绘制对象。

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

<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 属性无法识别。如何将自定义可绘制对象添加到数字选择器材质样式以设置自定义选择分隔线?

4

1 回答 1

1

似乎没有简单的方法可以做到这一点。在这种情况下,这个 StackOverflow 解决方案是唯一足够好的解决方案。为了其他读者,我将在此处复制/粘贴答案。

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)来设置分隔线的颜色。

于 2017-10-10T05:43:26.933 回答