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
相关文章:
攀枝花网站建设,攀枝花营业执照网上怎么年审?
广州建站公司哪家好?十大优质服务商推荐
导航网站建站方案与优化指南:一站式高效搭建技巧解析
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
制作网站外包平台,自动化接单网站有哪些?
大型企业网站制作流程,做网站需要注册公司吗?
如何在云指建站中生成FTP站点?
Bpmn 2.0的XML文件怎么画流程图
怀化网站制作公司,怀化新生儿上户网上办理流程?
如何快速辨别茅台真假?关键步骤解析
广平建站公司哪家专业可靠?如何选择?
简单实现Android验证码
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
如何获取开源自助建站系统免费下载链接?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
宝塔面板如何快速创建新站点?
如何通过服务器快速搭建网站?完整步骤解析
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
网站制作网站,深圳做网站哪家比较好?
PHP 500报错的快速解决方法
5种Android数据存储方式汇总
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
大连网站设计制作招聘信息,大连投诉网站有哪些?
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
子杰智能建站系统|零代码开发与AI生成SEO优化指南
实例解析angularjs的filter过滤器
Python路径拼接规范_跨平台处理说明【指导】
网站制作的步骤包括,正确网址格式怎么写?
Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递
如何彻底删除建站之星生成的Banner?
如何确保西部建站助手FTP传输的安全性?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
,柠檬视频怎样兑换vip?
免费视频制作网站,更新又快又好的免费电影网站?
建站之星收费标准详解:套餐费用及年费价格表一览
建站之星好吗?新手能否轻松上手建站?
如何快速查询域名建站关键信息?
如何快速完成中国万网建站详细流程?
文字头像制作网站推荐软件,醒图能自动配文字吗?
如何快速搭建个人网站并优化SEO?
,制作一个手机app网站要多少钱?
公司门户网站制作流程,华为官网怎么做?
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
青浦网站制作公司有哪些,苹果官网发货地是哪里?
如何快速生成专业多端适配建站电话?
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
如何使用Golang table-driven基准测试_多组数据测量函数效率
建站主机选择指南:服务器配置与SEO优化实战技巧
*请认真填写需求信息,我们会在24小时内与您取得联系。