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

Android中Material Design 3时间选择器输入模式选中字段高亮设置问题

解决Material Design 3时间选择器输入模式选中字段不高亮问题

问题分析

你遇到的colorSurfaceContainerHighest无法解析的问题,核心原因是当前主题未正确继承Material Design 3(M3)主题——这个属性是M3动态颜色系统的特有属性,只有基于M3主题的样式才能识别它。

两种解决方案

方案1:基于M3主题配置系统高亮色

  1. 确保你的App主题继承自M3官方主题,比如Theme.Material3.Light或Theme.Material3.DayNight:
<style name="AppTheme" parent="Theme.Material3.Light.NoActionBar">
    <!-- 其他主题配置 -->
    <!-- 设置你想要的浅绿色作为Surface Container Highest颜色 -->
    <item name="colorSurfaceContainerHighest">@color/light_green</item>
</style>
  1. 让时间选择器使用该主题:布局中的TimePicker控件会自动继承App主题;如果是弹窗式的MaterialTimePicker,创建时指定主题即可:
val timePicker = MaterialTimePicker.Builder()
    .setTheme(R.style.AppTheme)
    .build()

完成后切换到输入模式,选中字段就会自动应用你设置的颜色作为高亮背景。

方案2:直接自定义输入框选中状态样式

如果不想依赖M3主题的动态颜色系统,也可以直接为时间选择器的输入框定制选中背景:

  1. 创建一个选中状态的drawable(res/drawable/time_input_selected_bg.xml):
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 选中(获取焦点)时的浅绿色背景 -->
    <item android:state_focused="true">
        <shape android:shape="rectangle">
            <solid android:color="@color/light_green" />
            <corners android:radius="4dp" /> <!-- 匹配M3圆角风格 -->
        </shape>
    </item>
    <!-- 未选中时透明背景 -->
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@android:color/transparent" />
        </shape>
    </item>
</selector>
  1. 定义时间选择器输入框的样式:
<style name="CustomTimeInputStyle" parent="Widget.Material3.TextInputEditText">
    <item name="android:background">@drawable/time_input_selected_bg</item>
</style>
  1. 给时间选择器绑定这个自定义样式:
<style name="CustomTimePickerStyle" parent="Widget.Material3.TimePicker">
    <item name="inputEditTextStyle">@style/CustomTimeInputStyle</item>
</style>
  1. 在布局或弹窗中使用该样式:
<!-- 布局中的TimePicker -->
<TimePicker
    android:id="@+id/timePicker"
    style="@style/CustomTimePickerStyle"
    ... />
<!-- 弹窗式MaterialTimePicker -->
val timePicker = MaterialTimePicker.Builder()
    .setTheme(R.style.CustomTimePickerStyle)
    .build()

注意事项

确保你的项目依赖的Material库版本足够新(建议使用1.9.0及以上),以支持完整的M3时间选择器特性:

implementation 'com.google.android.material:material:1.9.0'

内容的提问来源于stack exchange,提问作者Shubham Sawant

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 22:07:52