TextInputLayout изменить цвет подсказки при перемещении - PullRequest
0 голосов
/ 21 февраля 2020

Как и сотни вопросов, я хочу изменить цвет подсказки. Первоначально я хотел задать в комментариях другой такой вопрос (без ответа), но у меня недостаточно репутации, поэтому я спрашиваю здесь.

Я хочу, чтобы подсказка в TextInputEditText была одного цвета, и когда это плавает, чтобы быть другим. В других постах ответы всегда заключаются в том, как изменить подсказку, когда сфокусировано представление. Это не то, что я хочу, я могу это сделать. Я хочу изменить цвет подсказки, если текст редактирования не пуст. Я использую дизайн материалов textInputLayout и textInputEditText. Пробовал разные стили и селекторы и до сих пор не могу это сделать. Попытка расширить TextInputLayout, но я не знаю, как связать его с EditText, чтобы я мог использовать OnTextListener для дочернего представления.

Мой код до сих пор может изменять цвет подсказки только тогда, когда представление сфокусировано .

Стили:

<style name="TextInputLayoutAppearance" parent="Widget.Design.TextInputLayout">
    <item name="colorControlNormal">@color/green_03</item>
    <item name="colorControlActivated">@color/green_03</item>
    <item name="hintTextColor">@color/dark_blue_60</item>
</style>

<style name="MyHintStyle" parent="@android:style/TextAppearance">
    <!-- Hint color when floating and focused-->
    <item name="android:textColor">@color/dark_blue_60</item>
    <!-- doesn't change anything -->
    <item name="android:textColorHint">@color/dark_blue</item>
    <item name="colorAccent">@color/green_03</item>

    <item name="colorControlNormal">@color/green_03</item>
    <item name="colorControlActivated">@color/green_03</item>

</style>

XML:

<com.google.android.material.textfield.TextInputLayout
            android:id="@+id/textInputLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:textColorHint="@color/dark_blue"
            android:theme="@style/TextInputLayoutAppearance"
            app:errorEnabled="true"
            app:hintTextAppearance="@style/MyHintStyle">

            <com.google.android.material.textfield.TextInputEditText
                android:id="@+id/textInputEditText"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:backgroundTint="@color/green_03"
                android:hint="@string/phoneNumber"
                android:textColor="@color/dark_blue"
                android:inputType="number"
                android:maxLength="3"
                android:text="12" />

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

Есть ли способ расширить и изменить его программно для всех видов или установить глобальный слушатель или правильный способ использовать стили и селекторы.

1 Ответ

0 голосов
/ 21 февраля 2020

Я думаю, вы могли бы проверить, содержит ли editext что-то или если он сфокусирован. Если это так - тогда вы меняете цвет подсказки. Лучшее место, чтобы проверить это - View.FocusListener of EditText.

...