先看下运行截图
代码很简单,利用反射找到对应的全局变量 修改即可
/**
*
* 设置时间选择器的分割线颜色
* @param datePicker
*/
private void setDatePickerDividerColor(DatePicker datePicker){
// Divider changing:
// 获取 mSpinners
LinearLayout llFirst= (LinearLayout) datePicker.getChildAt(0);
// 获取 NumberPicker
LinearLayout mSpinners= (LinearLayout) llFirst.getChildAt(0);
for (int i = 0; i < mSpinners.getChildCount(); i++) {
NumberPicker picker = (NumberPicker) mSpinners.getChildAt(i);
Field[] pickerFields = NumberPicker.class.getDeclaredFields();
for (Field pf : pickerFields) {
if (pf.getName().equals("mSelectionDivider")) {//颜色
pf.setAccessible(true);
try {
// pf.set(picker.getHeight(), 20);
pf.set(picker, new ColorDrawable(getResources().getColor(android.R.color.holo_red_dark)));
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (NotFoundException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
}
}
/**
*
* 设置时间选择器的分割线高度
* @param datePicker
*/
private void setDatePickerDividerHight(DatePicker datePicker){
// Divider changing:
// 获取 mSpinners
LinearLayout llFirst= (LinearLayout) datePicker.getChildAt(0);
// 获取 NumberPicker
LinearLayout mSpinners= (LinearLayout) llFirst.getChildAt(0);
for (int i = 0; i < mSpinners.getChildCount(); i++) {
NumberPicker picker = (NumberPicker) mSpinners.getChildAt(i);
Field[] pickerFields = NumberPicker.class.getDeclaredFields();
for (Field pf : pickerFields) {
if(pf.getName().equals("mSelectionDividersDistance")){
pf.setAccessible(true);
try {
// pf.set(picker.getHeight(), 20);
pf.set(picker,40);//按照需求在此处修改
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (NotFoundException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
}
}