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

迁移至Material3后,如何去除TextInputLayout的淡粉色色调?

Material3迁移后TextInputLayout淡粉色问题解决指南

问题背景

应用从MaterialComponents迁移到Material3后,TextInputLayout组件出现无法消除的淡粉色色调。尝试调整主题的colorSurfaceContainerHighest或组件的boxBackgroundColor为灰色(如#15000000)时,粉色仍存在;但设置蓝色、绿色等颜色可正常生效。切换TextInputLayout.FormField的父样式对粉色无影响,仅修改主主题时色调才会变化。

原样式(MaterialComponents):
原样式

新样式(Material3):
新样式

当前主题代码:

<resources>
    <!-- Base application theme. -->
    <style name="Theme.Kanji" parent="Theme.Material3.Light.NoActionBar">
        <!-- Primary brand color. -->
        <item name="colorPrimary">@color/light_blue</item>
        <item name="colorPrimaryVariant">@color/navy_blue</item>
        <item name="colorOnPrimary">@color/black</item>

        <!-- Secondary brand color. -->
        <item name="colorSecondary">@color/brown</item>
        <item name="colorSecondaryVariant">@color/yellow</item>
        <item name="colorOnSecondary">@color/white</item>

        <item name="android:textColor">@color/black</item>
        <item name="android:colorBackground">@color/white</item>
        <item name="android:statusBarColor">@android:color/transparent</item>
        <item name="android:navigationBarColor">@android:color/transparent</item>
    </style>

    <style name="TextInputLayout.FormField" parent="Widget.Material3.TextInputLayout.FilledBox">
        <item name="boxStrokeColor">?attr/colorPrimaryVariant</item>
        <item name="cursorColor">?attr/colorPrimaryVariant</item>
        <item name="hintTextColor">?attr/colorPrimaryVariant</item>
    </style>

</resources>

解决步骤

1. 显式指定主题的Surface容器颜色

Material3中FilledBox样式的TextInputLayout默认使用colorSurfaceContainerHighest作为背景色,直接在主题中明确设置该颜色,覆盖系统默认值:

<style name="Theme.Kanji" parent="Theme.Material3.Light.NoActionBar">
    <!-- 保留原有配置 -->
    <item name="colorSurfaceContainerHighest">#15000000</item>
</style>

2. 强制锁定TextInputLayout背景色

如果主题级配置无效,直接在组件样式中设置boxBackgroundColor,并禁用背景色的状态叠加模式:

<style name="TextInputLayout.FormField" parent="Widget.Material3.TextInputLayout.FilledBox">
    <!-- 保留原有配置 -->
    <item name="boxBackgroundColor">#15000000</item>
    <!-- 禁用状态依赖的背景色变化,避免系统自动添加色调 -->
    <item name="boxBackgroundMode">solid</item>
</style>

3. 排查错误颜色的隐式影响

淡粉色通常是Material3默认的colorError色调,检查主题是否未显式覆盖该颜色,导致系统错误色影响输入框背景。添加以下配置到主题:

<style name="Theme.Kanji" parent="Theme.Material3.Light.NoActionBar">
    <!-- 保留原有配置 -->
    <item name="colorError">@color/your_custom_error_color</item>
    <item name="colorOnError">@color/white</item>
</style>

4. 用Material主题工具生成合规配色

如果以上方法都无效,使用Material官方的主题生成工具创建匹配需求的主题颜色,确保所有Surface相关颜色无异常色调叠加,再将生成的颜色值替换到项目主题中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 14:05:21