自定义TextInputLayout.OutlinedBox中的边界框描边

时间:2019-03-17 19:22:52

标签: android material-design

我正在尝试更改com.google.android.material.textfield.TextInputLayout的框描边颜色,虽然没有重点突出,但是没有属性,这是我的TextInputLayout代码

<com.google.android.material.textfield.TextInputLayout
    style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginStart="36dp"
    android:layout_marginTop="38dp"
    android:layout_marginEnd="36dp"
    android:textColorHint="@color/white"
    app:boxStrokeColor="@color/white"
    app:boxStrokeWidth="1dp">

    <EditText
        android:id="@+id/editTxt_email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/hint_email"
        android:inputType="textEmailAddress"
        android:textColorHint="@color/white" />
</com.google.android.material.textfield.TextInputLayout>

,我搜索了一种更改其颜色的方法,并找到了此链接: https://github.com/material-components/material-components-android/issues/112

所以我尝试在我的颜色文件中使用此行

<color name="mtrl_textinput_default_box_stroke_color" tools:override="true">#fff</color>

这解决了问题并更改了笔触框的颜色,但是这里的问题是我想在同一应用程序的其他TextInputLayouts中更改此颜色!

1 个答案:

答案 0 :(得分:2)

要更改框笔触颜色,只需使用xml中的 app:boxStrokeColor 属性即可。

 <com.google.android.material.textfield.TextInputLayout
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
        app:boxStrokeColor="@color/mySelector"
        ../>

您应该使用选择器。这是默认值:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:color="?attr/colorPrimary" android:state_focused="true"/>
  <item android:alpha="0.87" android:color="?attr/colorOnSurface" android:state_hovered="true"/>
  <item android:alpha="0.12" android:color="?attr/colorOnSurface" android:state_enabled="false"/>
  <item android:alpha="0.38" android:color="?attr/colorOnSurface"/>
</selector>

您还可以使用自定义样式:

  <style name="MyOutlinedBox" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
    <item name="boxStrokeColor">@color/text_input_selector</item>
  </style>

enter image description here enter image description here