Как изменить контур текстового поля в material.io? - PullRequest
2 голосов
/ 14 октября 2019

У меня есть два текстовых поля (Material.io), и когда я нажимаю на первое, цвет контура меняется на цвет, указанный в app:boxStrokeColor="@color/button_colour", но когда я выбираю другое текстовое поле, цвет первого текстового поляменяется на оттенок серого. Как я могу изменить этот цвет на любой другой цвет? enter image description here

1 Ответ

2 голосов
/ 14 октября 2019

Вместо использования цвета используйте селектор

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>

В противном случае вы можете:

  • используйте стандартный селектор для boxStrokeColor и переопределите цвета, используя android:theme="@style/ThemeOverlay_til"
  <style name="ThemeOverlay_til">
    <item name="colorOnSurface">@color/....</item>
  </style>
  • используйте собственный стиль для TextInputLayout, чтобы переопределитьцвета:

  <style name="Custom_OutlinedBox" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
    <item name="materialThemeOverlay">@style/MyMaterialThemeOverlay</item>
  </style>

  <style name="MyMaterialThemeOverlay" parent="@style/ThemeOverlay.MaterialComponents.TextInputEditText.OutlinedBox">
    <item name="colorOnSurface">@color/....</item>
  </style>
...