TextInputLayout - динамически устанавливать цвет плавающего текста

Я хочу изменить цвет плавающей метки для TextInputLayout управлять программно.

Я искал и только нашел решение, используя метод setHintTextAppearance, Этот метод принимает только параметр стиля, что означает, что мне нужно определить стиль в xml и использовать его во время выполнения.

Это не то, что я хочу. Я хочу иметь возможность устанавливать любой цвет во время выполнения, основываясь на ответе сервера.

Есть ли другое решение, например, переопределение классов или использование других методов?

1 ответ

Вот реализация для настройки вашего TextInputLayout, Я изменил один из ответов Stackru в соответствии с вашими требованиями:

final TextInputLayout til = (TextInputLayout) findViewById(R.id.yourTextInputLayout);
til.getEditText().setTypeface(tf);
try {
    final Field cthf = til.getClass().getDeclaredField("mCollapsingTextHelper");
    cthf.setAccessible(true);
    final Object cth = cthf.get(til);
    final Field tpf = cth.getClass().getDeclaredField("mTextPaint");
    tpf.setAccessible(true);
    ((TextPaint) tpf.get(cth)).setColor(getResources().getColor(R.color.hint_color));
} catch (Exception ignored) {}
Другие вопросы по тегам