android - NumberPicker Material Style 自定义选择 Divider

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

<分区>

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

number picker selection divider

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

我创建了继承数字选择器 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) 来设置分隔线的颜色。

关于android - NumberPicker Material Style 自定义选择 Divider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46659134/

相关文章:

android - 如何将 json 对象存储到共享首选项?

java - 在android中将图像url转换为位图时如何解决java.lang.OutOfMemoryError异常?

Android Timezone.getDefault() 给出 Asia/Calcutta 而不是 Asia/Kolkata

html - Angular Material 透明工具栏

android - 新 com.google.android.material.textfield.TextInputEditText 的全局样式

android - 更改 android numberpicker 分隔线颜色

软心 bean 粒糖和 Ice Cream Sandwich 中的 android 数字选择器默认设计更改

android - 修复 SharedElementTransition 动画显示不佳

Android NumberPicker 取消选择号码

android - Material 图标: Scaling 48dp to 144dp limitations