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
相关文章:
如何制作网站标识牌,动态网站如何制作(教程)?
如何通过虚拟主机快速完成网站搭建?
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
家庭服务器如何搭建个人网站?
电商平台网站制作流程,电商网站如何制作?
,网站推广常用方法?
音响网站制作视频教程,隆霸音响官方网站?
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
如何使用Golang安装API文档生成工具_快速生成接口文档
宝塔Windows建站如何避免显示默认IIS页面?
测试制作网站有哪些,测试性取向的权威测试或者网站?
郑州企业网站制作公司,郑州招聘网站有哪些?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
实例解析Array和String方法
如何获取开源自助建站系统免费下载链接?
打鱼网站制作软件,波克捕鱼官方号怎么注册?
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
宝塔建站教程:一键部署配置流程与SEO优化实战指南
平台云上自助建站如何快速打造专业网站?
建站之星如何通过成品分离优化网站效率?
头像制作网站在线制作软件,dw网页背景图像怎么设置?
如何在Golang中使用replace替换模块_指定本地或远程路径
如何用花生壳三步快速搭建专属网站?
学校建站服务器如何选型才能满足性能需求?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何通过主机屋免费建站教程十分钟搭建网站?
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
建站主机是否属于云主机类型?
建站之星如何保障用户数据免受黑客入侵?
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
长沙企业网站制作哪家好,长沙水业集团官方网站?
如何用低价快速搭建高质量网站?
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
外贸公司网站制作哪家好,maersk船公司官网?
Python文件管理规范_工程实践说明【指导】
如何在IIS中新建站点并配置端口与IP地址?
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
如何在云主机上快速搭建网站?
教育培训网站制作流程,请问edu教育网站的域名怎么申请?
如何快速选择适合个人网站的云服务器配置?
浅谈Javascript中的Label语句
东莞专业制作网站的公司,东莞大学生网的网址是什么?
北京网站制作的公司有哪些,北京白云观官方网站?
建站主机默认首页配置指南:核心功能与访问路径优化
成都网站制作公司哪家好,四川省职工服务网是做什么用?
b2c电商网站制作流程,b2c水平综合的电商平台?
*请认真填写需求信息,我们会在24小时内与您取得联系。