我创建了一个自定义的datepicker对话框,它扩展了
Theme.AppCompat.Light.Dialog.Alert
我在values / styles.xml和v21 / styles.xml中创建了一个样式...
该样式的代码是我创建的::
<style name="MyDatePickerDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="android:textColorPrimary">@color/accounts_darkgray_text</item>
<item name="colorControlNormal">@color/graph_rod_red</item>
<item name="android:windowBackground">@color/transparent</item>
</style>
在v21及以上版本中使用colorControlNormal我可以更改蓝色分隔符颜色,但在棒棒糖和前棒棒糖设备中,无论我在colorControlNormal中提到什么,它似乎都不接受。
如何更改21和&lt;的分隔符颜色? 21个android设备??
答案 0 :(得分:0)
我能够解决问题,如果这有助于其他人,思想会分享答案。
我使用反射技术来掌握“分隔符”并从代码隐藏中改变它的颜色。
LinearLayout llFirst = (LinearLayout) datePicker.getChildAt(0);
LinearLayout llSecond = (LinearLayout) llFirst.getChildAt(0);
for (int i = 0; i < llSecond.getChildCount(); i++) {
// Numberpickers in llSecond
NumberPicker picker = (NumberPicker) llSecond.getChildAt(i);
Field[] pickerFields = NumberPicker.class.getDeclaredFields();
for (Field pf : pickerFields) {
if (pf.getName().equals("mSelectionDivider")) {
pf.setAccessible(true);
try {
ColorDrawable colorDrawable = new ColorDrawable(mActivity.getResources()
.getColor(R.color.date_picker_divider));
pf.set(picker,colorDrawable);
} catch (IllegalArgumentException | Resources.NotFoundException
| IllegalAccessException e) {
e.printStackTrace();
}
break;
}
}
}