Android 中NumberPicker,DatePicker与DatePickerDialog中分割颜色的修改实例代码

前言: 开发中,为了应用整体美观,需要保持控件的色调和主题色保持一致,
例如:NumberPicker、DatePicker和DatePickerDialog的分割线颜色
一、NumberPicker的分割线颜色
我把对NumberPicker分割线颜色的方法写在一个工具类中,便于全局调用,代码如下:
public static void setNumberPickerDividerColor(Context context, NumberPicker numberPicker) {
NumberPicker picker = numberPicker;
Field[] pickerFields = NumberPicker.class.getDeclaredFields();
for (Field pf : pickerFields) {
if (pf.getName().equals("mSelectionDivider")) {
pf.setAccessible(true);
try {
//设置分割线的颜色值
pf.set(picker, new ColorDrawable(context.getResources().getColor(R.color.theme_pink)));
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (Resources.NotFoundException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
break;
}
}
}
二、DatePicker的分割线颜色
查看DataPicker的源码可以看到,DatePacker也是NumberPicker实现的,所以主要思想,还是修改NumberPicker分割线的颜色,代码如下:
public static void setDatePickerDividerColor(Context context, DatePicker datePicker){
// 获取 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, new ColorDrawable(context.getResources().getColor(R.color.theme_pink)));
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (Resources.NotFoundException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
break;
}
}
}
}
二、DatePickerDialog的分割线颜色
实现思路:拿到Dialog中DatePicker就可以改变分割先的颜色,主要代码如下:
DatePickerDialog datePickerDialog =
new DatePickerDialog(mContext, 0, listener, year, month, day);
datePickerDialog.setTitle("选择年月");
datePickerDialog.show();
DatePicker datePicker = datePickerDialog.getDatePickerStart(); //获取DatePicker
CommonUtil.setDatePickerDividerColor(mContext, datePicker); //设置分割线颜色
/*修改按钮颜色这个必须在show或者create方法后面*/
Button commitBtn = datePickerDialog.getButton(DialogInterface.BUTTON_POSITIVE); //确认按钮
commitBtn.setTextColor(Color.parseColor("#e8615e"));
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Android
# 中NumberPicker
# DatePicker与DatePickerDialog中分割颜色
# 分割颜色的修改实例代码
# Android开发之滑动数值选择器NumberPicker用法示例
# Android CalendarView
# DatePicker
# TimePicker
# 以及NumberPicker的使用
# Android数字选择器NumberPicker使用详解
# 分割线
# 希望能
# 可以看到
# 谢谢大家
# 写在
# 就可以
# 把对
# 类中
# 的色
# equals
# Field
# mSelectionDivider
# getName
# pickerFields
# getDeclaredFields
# pf
# setAccessible
# color
# getColor
# catch
相关文章:
成都网站制作公司哪家好,四川省职工服务网是做什么用?
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
如何快速生成橙子建站落地页链接?
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
宝塔面板如何快速创建新站点?
如何在云虚拟主机上快速搭建个人网站?
建站之星后台密码如何安全设置与找回?
网站制作说明怎么写,简述网页设计的流程并说明原因?
再谈Python中的字符串与字符编码(推荐)
如何高效完成独享虚拟主机建站?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
如何快速完成中国万网建站详细流程?
如何做网站制作流程,*游戏网站怎么搭建?
5种Android数据存储方式汇总
如何自定义建站之星网站的导航菜单样式?
建站主机选哪种环境更利于SEO优化?
如何彻底卸载建站之星软件?
如何通过万网虚拟主机快速搭建网站?
制作表格网站有哪些,线上表格怎么弄?
Swift中循环语句中的转移语句 break 和 continue
定制建站模板如何实现SEO优化与智能系统配置?18字教程
如何在宝塔面板中修改默认建站目录?
如何快速搭建高效香港服务器网站?
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
大连网站制作公司哪家好一点,大连买房网站哪个好?
零基础网站服务器架设实战:轻量应用与域名解析配置指南
建站之星如何助力企业快速打造五合一网站?
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
行程制作网站有哪些,第三方机票电子行程单怎么开?
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
宝塔建站教程:一键部署配置流程与SEO优化实战指南
已有域名和空间,如何快速搭建网站?
建站主机选择指南:服务器配置与SEO优化实战技巧
代刷网站制作软件,别人代刷火车票靠谱吗?
网站制作知乎推荐,想做自己的网站用什么工具比较好?
如何制作一个表白网站视频,关于勇敢表白的小标题?
制作网页的网站有哪些,电脑上怎么做网页?
济南企业网站制作公司,济南社保单位网上缴费步骤?
如何在万网自助建站平台快速创建网站?
为什么Go需要go mod文件_Go go mod文件作用说明
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
南京网站制作费用,南京远驱官方网站?
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
制作旅游网站html,怎样注册旅游网站?
学校免费自助建站系统:智能生成+拖拽设计+多端适配
如何高效利用亚马逊云主机搭建企业网站?
成都网站制作报价公司,成都工业用气开户费用?
*请认真填写需求信息,我们会在24小时内与您取得联系。