TimePickerDialog -下划线颜色修改
首先就是去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 -->
<NumberPicker
android: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 -->
<NumberPicker
android: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 -->
<NumberPicker
android: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 -->
<CalendarView
android: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.
TimePickerDialog -下划线颜色修改的更多相关文章
- 让控制台支持 ANSI 转义序列,输出下划线、修改颜色或其他控制
各种操作系统的控制台都支持 ANSI 转义序列(ANSI Escape Code).使用转义序列,可以对控制台进行很多额外的定制,例如修改颜色.修改标题栏,将文字添加下划线等. 当然,.NET 已经帮 ...
- iOS - UIButton设置文字标题下划线以及下划线颜色
创建button设置可以折行显示 - (void)viewDidLoad { [super viewDidLoad]; UIButton * button = [[UIButton alloc] in ...
- CSS改变字体下划线颜色
下图是网页中一个非常普通的列表. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQXVndXMzMzQ0/font/5a6L5L2T/fontsize/40 ...
- 隐藏android中EditText中的下划线以及修改光标颜色
在android开发中 EditTextText是我们经常用到的,我们使用时会有一些小问题,当我们点击输入文字时,EditText中的光标和下划线会变成粉红色. 解决方法很简单,我们只要在EditTe ...
- iOS 开发富文本之TTTAttributedLabel 在某个特定位置的文字添加跳转,下划线,修改字体大小,颜色
@property(nonatomic , strong) TTTAttributedLabel * ttLabel; @property(nonatomic , strong) NSRange li ...
- Android 入门(2)修改EditText下划线颜色 / 隐藏标题栏
1 添加颜色 colors.xml中增加 <color name="colorRed">#FF3300</color> 2 添加style styles.x ...
- 利用伪元素和css3实现鼠标移入下划线向两边展开效果
一.思路: 将伪元素:before和:after定位到元素底部中间,设置宽度从0变成100%达到目的. 二.实现: 1.首先定义一个块状元素(行内元素没有宽高)并修改样式为一个背景色为浅灰色的矩形,设 ...
- TabTopUnderLineLayout【自定义顶部选项卡(带下划线)】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 自定义顶部选项卡布局LinearLayout类,实现带下划线样式的效果. 备注:如果配合Fragment的话,MainActivit ...
- TabTopAutoLayout【自定义顶部选项卡区域(带下划线)(动态选项卡数据且可滑动)】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 自定义顶部选项卡布局LinearLayout类,实现带下划线且可滑动效果.[实际情况中建议使用RecyclerView] 备注:如果 ...
随机推荐
- 【Henu ACM Round#16 F】Om Nom and Necklace
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] KMP算法可以把"i前缀"pre[i] 分成ssssst的形式 这里t是s的前缀. 然后s其实就是pre[i]中 ...
- html5缓存
HTML5 提供了两种在client存储数据的新方法: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 这些都是由 coo ...
- iOS学习9_事件分发&响应链
iOS的三种事件:触摸事件/运动事件/远程控制事件 typedef enum { UIEventTypeTouches, UIEventTypeMotion, UIEventTypeRemoteCon ...
- base64格式的图片数据如何转成图片
base64格式的图片数据如何转成图片 一.总结 一句话总结:不仅要去掉前面的格式串,还需要base64_decode()解码才行. // $base_img是获取到前端传递的值 $base_img ...
- Mysql之索引的基本概念
一.索引是什么? 比如我们要在字典中找某一字,如何才能快速找到呢?那就是通过字典的目录. 对数据库来说,索引的作用就是给‘数据’加目录. 二.索引算法 设有N条随机记录,不用索引,平均查找N/2次,那 ...
- c#记录日志的方法
/// <summary> /// 生成日志 /// </summary> /// <param name="text"></param& ...
- 访问 IIS 元数据库失败 解决办法
装了VS2005再装IIS,结果出了些小问题访问IIS元数据库失败思考可能是次序出了问题,解决 1.打开CMD,进入 C:\WINDOWS\Microsoft.NET\Framework\v2.0.5 ...
- python requests请求卡住问题
最近经常接到别人反馈某个爬虫工具程序没有正常运行,需要下载的资讯数据也没有及时进行收录. 刚开始以为可能是机器的问题,偶尔机器会出现程序运行中途卡住的情况. 但随着异常的情况越来越频繁,我便只好去排查 ...
- 织梦DedeCMS会员登录或退出后如何直接跳转到首页
织梦dedecms默认情况下的会员登录后会直接跳转到会员中心,退出也是一样,但是如果我们想让会员登录后直接跳转到首页,那该如何实现呢? 经过我们的研究,已经找到解决办法,下面是详细的修改步骤: 首先在 ...
- JS之预编译和执行顺序(全局和函数)
预编译的两种情况 全局: 1.全局 直接是script标签中的代码,不包括函数执行 执行前: 1.首先生成一个GO(global object)对象,看不到,但是可以模拟出来用来分析 2.分析变量声明 ...