Android TimePicker组件选中的AM/PM选项无颜色高亮显示问题

TimePicker 样式配置如下:
<style name="Theme.MyTheme.TimePicker" parent="android:Widget.Material.TimePicker"> <item name="android:timePickerMode">clock</item> <item name="android:headerBackground">@color/header_color</item> <item name="android:numbersTextColor">@color/text_color_primary</item> <item name="android:numbersSelectorColor">@color/accent_color</item> <item name="android:numbersBackgroundColor">@color/button_color</item> <item name="android:background">@color/button_color</item> <item name="android:amPmTextColor">@color/delete_color</item> </style>
当前配置完成后,选中AM或PM选项时无高亮提示效果。
修复方案
该问题是因为原有配置仅设置了AM/PM的静态文字颜色,没有配置选中状态对应的样式,新增状态选择器即可解决:
- 在
res/color目录下新建am_pm_text_color.xml文字状态选择器:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="@color/accent_color" android:state_selected="true" /> <item android:color="@color/delete_color" android:state_selected="false" /> </selector>
- 在
res/drawable目录下新建am_pm_background.xml背景状态选择器:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/header_color" android:state_selected="true" /> <item android:drawable="@android:color/transparent" android:state_selected="false" /> </selector>
- 修改原有TimePicker样式,替换对应属性:
<style name="Theme.MyTheme.TimePicker" parent="android:Widget.Material.TimePicker"> <item name="android:timePickerMode">clock</item> <item name="android:headerBackground">@color/header_color</item> <item name="android:numbersTextColor">@color/text_color_primary</item> <item name="android:numbersSelectorColor">@color/accent_color</item> <item name="android:numbersBackgroundColor">@color/button_color</item> <item name="android:background">@color/button_color</item> <item name="android:amPmTextColor">@color/am_pm_text_color</item> <item name="android:amPmBackground">@drawable/am_pm_background</item> </style>
如果使用的是AndroidX Material Components库的TimePicker,将属性前缀android:替换为app:即可生效。
内容的提问来源于stack exchange,提问作者chirag goyal
相关产品推荐
相关产品推荐

