backgroundTint 属性为整个 TextInputEditText 着色

Posted

技术标签:

【中文标题】backgroundTint 属性为整个 TextInputEditText 着色【英文标题】:backgroundTint property colores the whole TextInputEditText 【发布时间】:2022-01-08 09:04:18 【问题描述】:

我想为 editText 下划线设置颜色。我怎样才能实现它?正如我在标题中提到的,我尝试设置 backgroundTint 属性,但不是着色下划线,而是整个 TextInputEditText 被着色

xml

<com.google.android.material.textfield.TextInputLayout
                android:id="@+id/passwordInputLayout"
                android:layout_
                android:layout_
                android:layout_marginStart="16dp"
                android:layout_marginEnd="16dp"
                android:hint="@string/password_hint"
                android:textColorHint="@color/white"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/usernameInputLayout"
                app:passwordToggleEnabled="true"
                app:passwordToggleTint="#8E8E93">
    
                <com.google.android.material.textfield.TextInputEditText
                    android:id="@+id/passwordInputEditText"
                    android:layout_
                    android:layout_
                    android:inputType="textPassword"
                    android:text="@=authViewModel._password"
                    android:background="#00000000"
                    android:textColor="@color/white"/>
    </com.google.android.material.textfield.TextInputLayout>

【问题讨论】:

【参考方案1】:

不要设置backgroundTint 属性,而是尝试以下代码(这将使您能够设置TextInputEditText 的下划线颜色,然后您可以根据自己的喜好对其进行自定义:

activity_main.xml:

 <com.google.android.material.textfield.TextInputLayout
        style="@style/textInputLayout.BlueLabel"
        android:layout_
        android:layout_
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="16dp"
        android:hint="Username"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <com.google.android.material.textfield.TextInputEditText
            style="@style/textInputLayout.BlueLabel"
            android:layout_
            android:layout_
            android:layout_marginTop="16dp" />
    </com.google.android.material.textfield.TextInputLayout>

styles.xml:

<resources>
    <style name="textInputLayout.BlueLabel"
        parent="Widget.Design.TextInputLayout">
        <item name="hintTextAppearance">@style/AppTheme.TextFloatLabelAppearance</item>
    </style>

    <style name="AppTheme.TextFloatLabelAppearance"
        parent="TextAppearance.Design.Hint">
        <item name="hintTextColor">@color/teal_200</item> <!--Change underline color here-->
    </style>
</resources>

如您现在所见,我们已将下划线颜色更改为蓝绿色:

唯一的警告TextInputLayout 的外观并不是真正的“类似材料”。如果您遇到任何错误或问题,请在 cmets 中告诉我。

【讨论】:

以上是关于backgroundTint 属性为整个 TextInputEditText 着色的主要内容,如果未能解决你的问题,请参考以下文章

android:backgroundTint 不工作 - Android

AppCompatButton backgroundTint API < 21

错误:(36, 33) 尺寸类型不允许(在“backgroundTint”处,值为“22dp”)

Android改变图片背景颜色tint(着色)或 backgroundTint

如果 EditText 字段中有文本,如何更改 backgroundtint 颜色?

XML 中的 backgroundTint 不会改变 BottomActionBar 的颜色,即使使用 min API >= 21