我想自定义数字选择器选择分频器。
我创建了自定义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添加到数字选择器材质样式以设置自定义选择分隔符?
答案 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)来设置分隔符的颜色。