DatePicker组件没有修改分割线颜色的方法,如果项目中有需求要改分割线颜色,那么用下面的方法。
新建一个类继承DatePicker
采用反射的方式
贴出代码
/**
* 设置分割线颜色
*/
public void setDividerColor(int color) {
//获取DatePicker中的NumberPicker
List<NumberPicker> mPickers = new ArrayList<>();
LinearLayout llFirst = (LinearLayout) getChildAt(0);
LinearLayout mSpinners = (LinearLayout) llFirst.getChildAt(0);
for (int i = 0; i < mSpinners.getChildCount(); i++) {
NumberPicker picker = (NumberPicker) mSpinners.getChildAt(i);
mPickers.add(i, picker);
}
for (int i = 0; i < mPickers.size(); i++) {
NumberPicker picker = mPickers.get(i);
try {
//利用反射拿到分割线属性
Field pf = NumberPicker.class.getDeclaredField("mSelectionDivider");
pf.setAccessible(true);
pf.set(picker, new ColorDrawable(color));
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}