настроить обводку ограничивающей рамки в TextInputLayout.OutlinedBox

Я пытаюсь изменить цвет обводки поля 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)


Чтобы изменить цвет обводки блока, просто используйте атрибут app:boxStrokeColor в xml.

 <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>

введите здесь описание изображения введите здесь описание изображения

person Gabriele Mariotti    schedule 04.09.2019
comment
@AbrahamMathew Какую версию библиотеки вы используете? В любом случае вы можете использовать свой любимый цвет, это просто селектор по умолчанию, опубликованный в качестве примера. - person Gabriele Mariotti; 15.11.2019
comment
Использование реализации «com.google.android.material:material:1.0.0» - person Abraham Mathew; 19.11.2019
comment
@AbrahamMathew Используйте 1.1.0 библиотеки или просто замените на свой любимый цвет. - person Gabriele Mariotti; 19.11.2019
comment
Не удалось разрешить: com.google.android.material:material:1.1.0 - person Abraham Mathew; 19.11.2019
comment
@AbrahamMathew Ознакомьтесь с официальным документом. Последняя версия — реализация «com.google.android.material:material:1.1.0-beta02». - person Gabriele Mariotti; 19.11.2019
comment
Хорошее решение, но в моем случае метка при вводе текста не меняет цвет. Как это исправить? я использую com.google.android.material:material:1.2.1 (теперь его последняя стабильная версия) - person Fortran; 30.01.2021
comment
решение: добавить app:hintTextColor=@color/red - person Fortran; 30.01.2021