首先就是去framework下去找与之相关的theme属性

最开始的时候,直接找的是<item name="datePickerStyle">@style/Widget.Funui.DatePicker</item> ,但是,往父类里面找的话,并没有找到有效属性,仅仅就有一个布局

<item name="android:internalLayout">@android:layout/date_picker_holo</item>属性,然后就从这里着手,看到了一个布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:orientation="horizontal"android:gravity="center"><LinearLayout android:id="@+id/pickers"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:orientation="horizontal"android:gravity="center"><!-- Month --><NumberPickerandroid:id="@+id/month"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="16dip"android:layout_marginBottom="16dip"android:layout_marginStart="8dip"android:layout_marginEnd="8dip"android:focusable="true"android:focusableInTouchMode="true"/><!-- Day --><NumberPickerandroid:id="@+id/day"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="16dip"android:layout_marginBottom="16dip"android:layout_marginStart="8dip"android:layout_marginEnd="8dip"android:focusable="true"android:focusableInTouchMode="true"/><!-- Year --><NumberPickerandroid:id="@+id/year"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="16dip"android:layout_marginBottom="16dip"android:layout_marginStart="8dip"android:layout_marginEnd="16dip"android:focusable="true"android:focusableInTouchMode="true"/></LinearLayout><!-- calendar view --><CalendarViewandroid:id="@+id/calendar_view"android:layout_width="245dip"android:layout_height="280dip"android:layout_marginStart="16dip"android:layout_marginEnd="16dip"android:layout_weight="1"android:focusable="true"android:focusableInTouchMode="true"/></LinearLayout>

发现其中并没有关于下划线的控件,后来感觉这个应该跟NumberPicker 有关,进入后,发现这个控件中有对下划线的绘制,然后就再次到theme下寻找这个控件的属性,找到了一条

<item name="numberPickerStyle">@style/Widget.Funui.NumberPicker</item>,沿着这个属性往下找,找到了父类,如下

<style name="Widget.Holo.NumberPicker" parent="Widget.NumberPicker"><item name="android:internalLayout">@android:layout/number_picker_with_selector_wheel</item><item name="android:solidColor">@android:color/transparent</item>
<!--更改下划线的属性-->        <item name="android:selectionDivider">@android:drawable/numberpicker_selection_divider</item><item name="android:selectionDividerHeight">2dip</item><item name="android:selectionDividersDistance">48dip</item><item name="android:internalMinWidth">64dip</item><item name="android:internalMaxHeight">180dip</item><item name="virtualButtonPressedDrawable">?android:attr/selectableItemBackground</item></style>

然后我们在framework中替换这条属性以后,确实发生了作用,但是,当我们尝试在应用中进行修改的时候,这时候又遇到了一个问题,就是,如果我们按照如下的方法进行修改

<resources><style name="Settings.Theme" parent="Custom_Settings_Theme"><item name="apnPreferenceStyle">@style/ApnPreference</item><item name="android:actionBarTabTextStyle">@style/customActionBarTabTextStyle</item><item name="android:actionBarStyle">@style/SettingsBarStyle</item><item name="android:actionBarTabStyle">@style/SettingsActionBarTabView</item><item name="*android:actionMenuLandTextColor">#ffffff</item><item name="android:actionMenuTextColor">@color/action_menu_text_color</item><item name="*android:homeAsUpIndicator">@drawable/ic_ab_back_holo_dark_am</item><item name="wifi_signal">@drawable/wifi_signal_light</item><item name="android:windowFullscreen">true</item><item name="android:switchStyle">@style/mySwitchStyle</item><item name="android:listChoiceIndicatorSingle">@drawable/btn_radio_funui</item><item name="android:listChoiceIndicatorMultiple">@drawable/btn_check_funui</item><item name="android:alertDialogTheme">@style/Settings.Theme.AlterDialog</item>
<!--设置picker style-->        <item name="*android:numberPickerStyle">@style/Settings.Theme.NumberPicker</item></style><style name="Settings.Theme.NumberPicker" parent="@*android:style/Widget.Funui.NumberPicker"><item name="*android:selectionDivider">@drawable/numberpicker_selection_divider</item></style>

这时候你会发现,我们的设置并没有起到作用,然后替换第二种

也就是在代码中创建picker的时候,传入一个属性

new TimePickerDialog(this, SchedulePowerOnOff.Theme.NumberPicker, this, mHour, mMinutes, DateFormat.is24HourFormat(this)).show();

这时候你会发现又出现了问题,那就是这个时间弹出来的时候,不具有dialog风格了,也就是说,你的属性过滤掉了dialog风格,因为说到底,这个TimePickerDialog外层就是一个dialog

最后听了同事的方法,完美解决了问题,那就是,在dialog属性里面添加TimePickerDialog的风格,如下

<?xml version="1.0" encoding="utf-8"?>
<resources><style name="SchedulePowerOnOff.Theme" parent="@android:style/Theme.Funui"><item name="android:windowFullscreen">true</item><item name="android:actionBarStyle">@style/actionbar_def_style</item><item name="android:listChoiceIndicatorMultiple">@drawable/btn_check_funui</item><item name="android:switchStyle">@style/mySwitchStyle</item> <!--这个是关键,是对picker产生作用的过度属性-->        <item name="android:alertDialogTheme">@style/SchedulePowerOnOff.Theme.AlertDialog</item>
<!--dialog外层的picker属性产生影响-->        <item name="*android:numberPickerStyle">@style/SchedulePowerOnOff.Theme.NumberPicker</item></style><style name="mySwitchStyle" parent="@*android:style/Widget.Funui.CompoundButton.Switch"><item name="android:track">@drawable/switch_track_funui</item></style><style name="SchedulePowerOnOff.Theme.AlertDialog" parent="@*android:style/Theme.Funui.Dialog.Alert"><item name="android:listChoiceIndicatorSingle">@drawable/btn_radio_funui</item><item name="android:listChoiceIndicatorMultiple">@drawable/btn_check_funui</item><item name="*android:numberPickerStyle">@style/SchedulePowerOnOff.Theme.NumberPicker</item></style><style name="actionbar_def_style" parent="@android:style/Widget.Funui.ActionBar"><item name="android:displayOptions">homeAsUp|showTitle</item><item name="android:background">#b54cff</item></style><style name="SchedulePowerOnOff.Theme.NumberPicker" parent="@*android:style/Widget.Funui.NumberPicker"><item name="*android:selectionDivider">@drawable/numberpicker_selection_divider</item> <!--下划线的宽度-->              <item name="android:selectionDividerHeight">0.5dip</item>    </style>
</resources>

这个其实你会发现,以后所有类似的情况都可以用这中方法解决,也就是说,如果一个控件里面包含其他的控件,想在theme中更改内层的控件,就必须在他的外层中进行修改。注意,这时候他的父类集成的是Theme.

转载于:https://www.cnblogs.com/zhangshuli-1989/p/zhangshuli_time_15011917.html

TimePickerDialog -下划线颜色修改相关推荐

  1. ant-design中取消tab激活时候的下划线、以及修改tab激活时候下划线颜色

    git上看到的这个取消 1. 取消下划线 写在当前vue文件样式中不添加scoped属性才会生效. 最好还是新建一个global.less中修改组件默认样式,然后在main.js中引入一下.一般在要修 ...

  2. ios 按钮文字下划线_iOS - UIButton设置文字标题下划线以及下划线颜色

    创建button设置可以折行显示 - (void)viewDidLoad { [super viewDidLoad]; UIButton * button = [[UIButton alloc] in ...

  3. html中加个有颜色横线,关于html:更改下划线颜色

    我在这里有此代码: echo"$username"; 首先,如您所见,它带有下划线(). 其次,所有文字均为红色. 那么,是否有将文本($ username)留为红色而下划线为黑的 ...

  4. android AppCompatEditText 自定义下划线颜色

    今天,就讲讲  AppCompatEditText设置下划线颜色的知识. 如下图所示: style中添加 </pre><pre name="code" cla ...

  5. CSS改变字体下划线颜色

    下图是网页中一个很普通的列表. 这次去见客户的时候,客户觉得下划线的颜色可以变变,网页就变得不单调了(据后来了解,客户上学时出板报,所以对网站的布局和细节非常的重视).做网站那么久,第一次要换下划线颜 ...

  6. TextView超链接文本样式去掉下划线和修改颜色

    1.新建ComponentClickableSpan类重写ClickableSpan public class ComponentClickableSpan extends ClickableSpan ...

  7. Android之自定义EditText光标和下划线颜色

    最近在写些小Demo复习基础,在用到EditText的时候突然发现之前几乎没有注意到它的光标和下划线的颜色,于是花了不少时间,看了不少博客,现在就来总结和分享一下收获. 1.第一印象:原生的EditT ...

  8. 【CSS】下划线与文字间距,下划线粗细以及下划线颜色的设置

    最开始的时候了解下划线的属性是: text-decoration:underline; 但是,很遗憾的是,对于设计做的下划线用浏览器默认属性样式很难调整,使用这个属性并不能调整下划线与文字的间距,而且 ...

  9. CSS下划线与文字间距,下划线粗细以及下划线颜色的设置

    最开始的时候了解下划线的属性是: text-decoration:underline; 1 但是,很遗憾的是,对于设计做的下划线用浏览器默认属性样式很难调整,使用这个属性并不能调整下划线与文字的间距, ...

  10. css设置字体下划线与下划线颜色

    color: red; // 文本下划线 text-decoration: underline; // 下滑线颜色,默认和字体颜色一样 text-decoration-color: green;

最新文章

  1. Android 接入支付宝支付实现
  2. python中nltk_python2.7和NLTK安装详细教程
  3. source insight增加tab标签页的方法之sihook
  4. mysql中的参数如何调试_mysql 查询优化 ~ 查询参数调节
  5. 许昌:让便捷支付成为智慧城市新名片
  6. 【Android 修炼手册】Gradle 篇 -- Gradle 的基本使用
  7. app开发历程————Android程序解析服务器端的JSON格式数据,显示在界面上
  8. VMware vSphere5.0 HA高可用性原理
  9. error code 0x80131022什么意思_page fault时发生了什么
  10. python字典嵌套列表怎么访问值的某个元素_python – 访问嵌套在字典中的值
  11. BGP选择路由的策略
  12. IBM SPSS Statistics 25 安装教程
  13. DICOM worklist工作原理?
  14. idea下搭建vue开发环境
  15. 2020 数学建模国赛 B 题参考思路
  16. 软件体系结构——设计模式
  17. python制作指定区域截图工具_用python实现选择截图区域
  18. python实践周总结_Python 一周总结
  19. vue print 解决打印每页都有表头
  20. 支持个性化定制的酷玩多功能桌面充电器上手体验

热门文章

  1. LINUX 下安装 jdk 问题(please use alien to install rpm packages on Debian )
  2. react-native 自定义view向js暴露接口方法
  3. 一次接口超时排查,花费了我两个星期。。
  4. 阿里“拆台”,中台真的不香了?
  5. 厉害,Spring Boot 2.3.0 刚刚发布了!
  6. 求助!妹子一个rm -rf把公司服务器数据删没了,我该怎么办
  7. 普通程序员如何向人工智能方向转型?
  8. 年薪 80w 的程序员被鄙视了!
  9. 喜提 300w 硬核资产!
  10. 圆满结束,一睹各位大神风采