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

Android MaterialTimePicker自定义样式问题:无法修改选中Chip相关属性

MaterialTimePicker 自定义样式解决方案

问题1 & 2:修改选中Chip的背景与文字颜色

你的TimePicker.Chip样式继承父类没问题,但需要确保颜色选择器正确区分选中/未选中状态(MaterialTimePicker的Chip依赖state_selected状态标识选中)。

1. 创建Chip背景颜色选择器

在res/color/目录下新建time_picker_chip_background_selector.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 选中状态背景色 -->
    <item android:color="@color/your_selected_bg_color" android:state_selected="true"/>
    <!-- 未选中状态背景色 -->
    <item android:color="@color/your_unselected_bg_color" android:state_selected="false"/>
</selector>

2. 创建Chip文字颜色选择器

在res/color/目录下新建time_picker_chip_text_selector.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 选中状态文字色 -->
    <item android:color="@color/your_selected_text_color" android:state_selected="true"/>
    <!-- 未选中状态文字色 -->
    <item android:color="@color/your_unselected_text_color" android:state_selected="false"/>
</selector>

3. 修正Chip样式

确保样式正确应用上述选择器:

<style name="TimePicker.Chip" parent="Widget.MaterialComponents.TimePicker.Display">
    <item name="chipBackgroundColor">@color/time_picker_chip_background_selector</item>
    <item name="android:textColor">@color/time_picker_chip_text_selector</item>
    <item name="rippleColor">@color/yellow_56</item>
    <item name="android:textAlignment">center</item>
</style>

问题3:移除或设置Chip标签颜色

MaterialTimePicker的Chip标签(如"AM"/"PM")属于Chip的图标部分,可通过以下两种方式处理:

方式1:隐藏标签

适用于Material Components版本≥1.5.0,通过属性直接隐藏图标:

<style name="TimePicker.Chip" parent="Widget.MaterialComponents.TimePicker.Display">
    <!-- 隐藏标签图标 -->
    <item name="chipIconVisible">false</item>
</style>

方式2:修改标签颜色

保留标签并自定义颜色:

<style name="TimePicker.Chip" parent="Widget.MaterialComponents.TimePicker.Display">
    <!-- 设置标签图标颜色 -->
    <item name="chipIconTint">@color/your_label_color</item>
</style>

完整修改后的样式代码

<style name="TimePicker" parent="ThemeOverlay.MaterialComponents.TimePicker">
    <item name="colorPrimary">@color/primary_71</item>
    <item name="colorSurface">@color/blue_22</item>
    <item name="colorOnSurface">@color/grey_100</item>
    <item name="materialButtonOutlinedStyle">@style/TimePicker.Button</item>
    <item name="chipStyle">@style/TimePicker.Chip</item>
    <item name="imageButtonStyle">@style/TimePicker.ImageButton</item>
    <item name="borderlessButtonStyle">@style/borderlessButtonStyle</item>
</style>

<style name="borderlessButtonStyle" parent="Widget.MaterialComponents.Button.TextButton.Dialog">
    <item name="android:textColor">@color/picker_dialog_color_selector</item>
</style>

<style name="TimePicker.Button" parent="Widget.MaterialComponents.TimePicker.Button">
    <item name="backgroundTint">@color/time_picker_button_background_selector</item>
    <item name="android:layout_height">48dp</item>
    <item name="android:padding">0dp</item>
    <item name="android:insetTop">0dp</item>
    <item name="android:insetBottom">0dp</item>
    <item name="android:textColor">@color/time_picker_button_text_selector</item>
    <item name="android:textAlignment">center</item>
    <item name="strokeColor">@color/blue_37</item>
    <item name="strokeWidth">1dp</item>
</style>

<style name="TimePicker.Chip" parent="Widget.MaterialComponents.TimePicker.Display">
    <item name="chipBackgroundColor">@color/time_picker_chip_background_selector</item>
    <item name="rippleColor">@color/yellow_56</item>
    <item name="android:textAlignment">center</item>
    <item name="android:textColor">@color/time_picker_chip_text_selector</item>
    <!-- 选择一种方式处理标签 -->
    <item name="chipIconVisible">false</item>
    <!-- <item name="chipIconTint">@color/your_label_color</item> -->
</style>

<style name="TimePicker.ImageButton" parent="Widget.MaterialComponents.TimePicker.ImageButton">
    <item name="android:visibility">gone</item>
</style>

内容的提问来源于stack exchange,提问作者Evgeni Roitburg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 03:25:01