我想自定义数字选择器选择分隔线。
我创建了自定义可绘制对象以用于数字选择器选择分隔线。
我创建了继承数字选择器 Material 样式的自定义 Material 样式。
<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 属性。如何将我的自定义可绘制对象添加到数字选择器 Material 样式以设置自定义选择分隔符?
似乎没有简单的方法可以做到这一点。 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) 来设置分隔线的颜色。