如何在未聚焦时更改 TextInputEditText 浮动提示颜色

Say*_*der 5 android styling android-textinputlayout

我正在尝试创建一个 TextInputEditText,其浮动提示颜色在不聚焦时不会改变。提示的颜色从白色变为蓝色,即更改为通过textColorHint字段设置的颜色。

在此输入图像描述

仅当 TextInputEditText 已填充且未聚焦时才会发生这种情况。我希望提示在 TextInputEditText 上方时为白色,在框内时为蓝色。当 TextInputEditText 不为空且未聚焦时,提示颜色将变为蓝色。

在此输入图像描述

文本输入编辑文本

    <com.google.android.material.textfield.TextInputLayout
        android:id="@+id/textInputLayout"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="4dp"
        android:textColorHint="@color/app_blue"
        app:hintTextAppearance="@style/TextAppearance.App.TextInputLayout"
        app:layout_constraintEnd_toStartOf="@+id/guideline"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/fNameET"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/text_input_layout_background"
            android:ellipsize="end"
            android:hint="First Name"
            android:lines="1"
            android:maxLines="1"
            android:paddingStart="16dp"
            android:paddingEnd="16dp" />
</com.google.android.material.textfield.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

TextAppearance.App.TextInputLayout

    <style name="TextAppearance.App.TextInputLayout" parent="@android:style/TextAppearance">
        <item name="android:textColor">@android:color/white</item>
    </style>
Run Code Online (Sandbox Code Playgroud)

我想使用xml而不是java来完成上述任务。

小智 4

将此代码添加到您的 style.xml 文件中 ->

<style name="TextLabelDummy" parent="Widget.MaterialComponents.TextInputLayout.FilledBox.Dense">
        <item name="colorAccent">@color/black</item>  // Text Color
        <item name="android:textColorHint">@color/blue</item>    // Hint Color
        <item name="colorControlActivated">@color/white</item>    //Floating label color
    </style>
Run Code Online (Sandbox Code Playgroud)

您可以根据需要更改父属性。我随机使用了“Widget.MaterialComponents.TextInputLayout.FilledBox.Dense”

然后将其作为主题调用到布局文件中

<com.google.android.material.textfield.TextInputLayout
            android:id="@+id/textInputLayoutNumberDummy"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="32dp"
            android:layout_marginBottom="32dp"
            android:theme="@style/TextLabelDummy">

            <com.google.android.material.textfield.TextInputEditText
                android:id="@+id/textInputEditTextNumberDummy"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/text_mobile" />

        </com.google.android.material.textfield.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

在我这边效果很好。请检查一下并告诉我。谢谢。