如何设置TextInputLayout的下划线颜色

时间:2020-02-25 01:11:04

标签: android material-components-android

我正在Android 9.0上使用 com.google.android.material:material:1.1.0 。 我想设置TextInputLayout的下划线颜色时不突出显示但没有任何效果。

我的风格:

<style name="EditTextTheme" parent="Widget.MaterialComponents.TextInputLayout.FilledBox">
    <item name="colorAccent">#00BFFF</item>
    <item name="colorControlNormal">#FFFF00</item>
    <item name="colorControlActivated">#FF00FF</item>
    <item name="colorControlHighlight">#FFFF00</item>
    <item name="boxStrokeColor">@color/text_input_box_stroke</item>
</style>

我的选择器(text_input_box_stroke):

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="#00BFFF" android:state_focused="true"/>
    <item android:color="#FFFF00" android:state_hovered="true"/>
    <item android:color="#00FF00" android:state_enabled="false"/>
</selector>

还有我的TextInputLayout:

<com.google.android.material.textfield.TextInputLayout
    style="@style/EditTextTheme"
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:layout_marginLeft="50dp"
    android:hint="Email">

    <com.google.android.material.textfield.TextInputEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textWebEmailAddress" />
</com.google.android.material.textfield.TextInputLayout>

1 个答案:

答案 0 :(得分:1)

右键单击res-> new-> Android Resource Directory-> Resource type-> color 为文件命名,例如text_input_box_stroke.xml并将其放入彩色文件夹

text_input_box_stroke.xml

<?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item
    android:state_enabled="true"
    android:color="#00BFFF" />
  <item
    android:state_pressed="true"
    android:color="#FFFF00" />
  <item
    android:state_focused="true"
    android:color="#00C853" />
 <item
    android:color="#ff00ff" />
</selector>

为防止TextInputLayout视图在活动或包含该视图的片段开始时获得焦点,请将此属性放到包含TextInputLayout的父布局中

android:fadeScrollbars="false"
android:fillViewport="true"

布局文件

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout  
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:focusableInTouchMode="true"
android:id="@+id/content">
    <com.google.android.material.textfield.TextInputLayout
        android:id="@+id/layout_data"
        style="@style/TextInputLayoutStyleFilledBox"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:hint="Hint"
        android:textColorHint="@color/black"
        app:boxBackgroundColor="@android:color/transparent"
        app:boxStrokeWidth="2dp"
        app:hintTextColor="@color/black"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">
        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/input_value"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="123456789" />
    </com.google.android.material.textfield.TextInputLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

styles.xml

<style name="TextInputLayoutStyleFilledBox" 
 parent="@style/Widget.MaterialComponents.TextInputLayout.FilledBox">
    <item name="colorAccent">#00BFFF</item>
    <item name="colorControlNormal">#FFFF00</item>
    <item name="colorControlActivated">#FF00FF</item>
    <item name="colorControlHighlight">#FFFF00</item>
    <item name="boxStrokeColor">@color/text_input_box_stroke</item>
</style>