如何更改Android Material TextInputLayout组件的非活动边框描边颜色

Bip*_*alu 5 android android-textinputlayout android-textinputedittext material-components-android

我正在尝试设置 TextInputLayout 未聚焦的边框描边颜色。同样,有太多的问题和答案,我已经尝试了所有的问题。就像创建样式并用作主题一样,创建颜色选择器并应用它,也可以直接应用 app:boxStrokeColor 和颜色选择器。但这些可用的解决方案中的任何一个都不太幸运。

不确定,我哪里做错了或者我仍然缺少什么。我将我的代码推送到github 的测试项目,以便更好地了解我的整个设置。以下是一些用于快速查看的示例代码:

Activity_main.xml(ConstraintLayout 内的 TextInputLayout)

<com.google.android.material.appbar.MaterialToolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <!-- Tried this as well - app:boxStrokeColor="@color/text_input_box_stroke_color" -->
    <com.google.android.material.textfield.TextInputLayout
        android:id="@+id/emailTextInputLayout"
        android:hint="Email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="24dp"
        android:theme="@style/TextInputLayoutStyle"
        android:layout_marginHorizontal="24dp"
        app:layout_constraintTop_toBottomOf="@id/toolbar"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/emailTextInput"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:importantForAutofill="no"
            android:inputType="textEmailAddress" />

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

样式.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="TextInputLayoutStyle" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense">
        <item name="boxStrokeColor">#FF00CC</item>
        <item name="boxStrokeWidth">2dp</item>
    </style>
</resources>
Run Code Online (Sandbox Code Playgroud)

text_input_box_lines_color.xml(颜色选择器)

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/mtrl_textinput_focused_box_stroke_color" android:state_focused="true"/>
    <item android:color="@color/mtrl_textinput_hovered_box_stroke_color" android:state_hovered="true"/>
    <item android:color="@color/mtrl_textinput_disabled_color" android:state_enabled="false"/>
    <item android:color="@color/mtrl_textinput_default_box_stroke_color"/>
</selector>
Run Code Online (Sandbox Code Playgroud)

如果有人可以提供一些指导和建议并帮助我找出我所犯的任何错误,那将是很大的帮助。

提前致谢。

Slo*_*ing 2

接下来是这个问题的解决方案,这很有效,因为我刚刚测试了它。

转到您的文件夹colors.xml内部res>values

在此输入图像描述

在那里你将拥有colorPrimary你之前创建的颜色和其他颜色。滚动到底部并添加以下行:

<color name="mtrl_textinput_default_box_stroke_color" tools:override="true">@color/colorPrimary</color>
Run Code Online (Sandbox Code Playgroud)

当你这样做时,你可以改变那里的颜色。我定义为@color/colorPrimary但你可以使用任何你想要的。在应用这条线之前我得到了这个:

在此输入图像描述

应用该行后,结果如下:

在此输入图像描述

我也申请style="@style/YourStyle"TextInputLayoutTextInputEditText