You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

time picker dialogue image

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的静态文字颜色,没有配置选中状态对应的样式,新增状态选择器即可解决:

  1. 在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>
  1. 在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>
  1. 修改原有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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 02:24:08