1

我正在尝试将材料设计的 AND 设置为3hintTextColor 不同的颜色状态,例如:boxStrokeColortextInputLayout

  • 红色表示何时disabled(我不知道如何设置boxStrokeColorindisabled状态,所以请不要介意截图)

在此处输入图像描述

  • 当它是蓝色enabled时候unfocused

在此处输入图像描述

  • 当它是enabledAND时为绿色focused

在此处输入图像描述

我怎样才能做到这一点?

对于hintTextColor,我尝试了Gabriele Mariotti此处提出的建议,但问题是其中一种颜色应用于两种不同的状态([ disabled] 和 [ enabledbut unfocused]),我想区分这两种。

4

1 回答 1

3

您可以使用自定义样式:

<style name="CustomOutlineBox" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
    <item name="boxStrokeColor">@color/text_input_layout_stroke_color</item>
    <item name="android:textColorHint">@color/text_color_hint</item>
    <item name="hintTextColor">@color/green</item>
</style>

使用@color/text_color_hint选择器:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:alpha="..." android:color="@color/red" android:state_enabled="false"/>
    <item android:alpha="..." android:color="@color/blue"/>
</selector>

@color/text_input_layout_stroke_color选择器:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:alpha="..." android:color="@color/green" android:state_focused="true"/>
    <item android:alpha="..." android:color="@color/green" android:state_hovered="true"/>
    <item android:alpha="..." android:color="@color/red" android:state_enabled="false"/>
    <item android:alpha="..." android:color="@color/blue"/>  <!-- unfocused -->
</selector>

重点:

在此处输入图像描述

不专心:

在此处输入图像描述

禁用:

在此处输入图像描述

于 2020-10-31T08:48:32.923 回答