Android - Как изменить цвет текста в TextInputLayout (Компоненты материала)? - PullRequest
1 голос
/ 22 марта 2020

Мне нужно изменить цвет в тексте TextInputLayout, не меняя основной цвет. Я только хочу изменить цвет текста, введенного пользователем, а не подсказку. Я не могу найти какой-либо атрибут, чтобы сделать это ... то, что я пробовал:

<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
        <!-- Color definitions -->
        <item name="colorPrimary">@color/primaryColor</item>
        <item name="colorPrimaryDark">@color/primaryDarkColor</item>
        <item name="colorAccent">@color/secondaryColor</item>
        <item name="colorControlHighlight">@color/secondaryLightColor</item>
        <item name="colorButtonNormal">@color/secondaryColor</item>
        <item name="colorControlActivated">@color/secondaryColor</item>
        <item name="android:windowBackground">@color/colorWhite</item>
        <item name="android:textColorPrimary">@color/primaryTextColor</item>
        <item name="android:textColorSecondary">@color/secondaryTextColor</item>

        <item name="textInputStyle">@style/inputStyle</item>
    </style>

, где @style/inputStyle:

    <style name="inputStyle" parent="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">
        <item name="android:textColor">@color/secondaryTextColor</item> 
    </style>

Но, похоже, это не так Работа. Я заметил, что если я изменю colorPrimary цвет текста, но, как я уже сказал, я не могу его изменить. Что мне делать?

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

Вы можете изменить цвет входного текста с помощью атрибута android:textColor в тексте редактирования:

   <com.google.android.material.textfield.TextInputLayout
     ..>

        <com.google.android.material.textfield.TextInputEditText
            android:textColor="#FF11AA"
            ../>

    </com.google.android.material.textfield.TextInputLayout>

В противном случае, поскольку цвет текста TextInputEditText в настоящее время основан на цвете android:textColorPrimary вы также можете переопределить его, также используя:

        <com.google.android.material.textfield.TextInputEditText
            android:theme="@style/customEdit"
            ../>

с помощью:

  <style name="customEdit">
    <item name="android:textColorPrimary">@color/....</item>
  </style>

Или вы можете определить собственный стиль для TextInputLayout:

    <com.google.android.material.textfield.TextInputLayout
        style="@style/custom"
        ..>

с:

  <style name="custom" parent="Widget.MaterialComponents.TextInputLayout.FilledBox">
    <item name="materialThemeOverlay">@style/MyTextInputEditText_filledBox_custom_color</item>
  </style>

  <style name="MyTextInputEditText_filledBox_custom_color" parent="@style/Widget.MaterialComponents.TextInputEditText.FilledBox">
    <item name="android:textColorPrimary">@color/....</item>
  </style>
0 голосов
/ 22 марта 2020

Вам нужно разместить TextInputEditText виджет внутри TextInputLayout, и в этом вы можете установить атрибут textColor как обычно.

...