Android 更改系统DataPicker分割线颜色和距离
2016-04-13 17:00
579 查看
先看下运行截图
代码很简单,利用反射找到对应的全局变量 修改即可
/**
*
* 设置时间选择器的分割线颜色
* @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();
}
}
}
}
}
代码很简单,利用反射找到对应的全局变量 修改即可
/**
*
* 设置时间选择器的分割线颜色
* @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();
}
}
}
}
}
相关文章推荐
- Android Studio 使用zxing二维码处理
- ubuntu编译android源码
- Android Studio rename module Can't rename root module
- 【转载】第一次使用Android Studio时你应该知道的一切配置(三):gradle项目构建
- Android海量字体设置
- 启程Android之路
- XPlane android 2D手游开发实战
- 《Android源码设计模式》读书笔记 (24) 第24章 桥接模式
- Android Wear SDK 中文 ---- 创建表盘 [Creating Watch Faces]
- Android自定义View之刮刮卡效果
- 【转载】第一次使用Android Studio时你应该知道的一切配置(二)
- AndroidTest Espresso初步体验
- Android Wear API 中文 ---- 翻译目录
- Android属性动画实战(一)
- Android设置TextView颜色setTextColor
- Android之GPS定位详解
- Android中dip(dp)与px之间单位转换
- android零碎知识点总结
- Android studio import module Cannot find declaration to go to
- Adb --help