setHintTextColor () в EditText - PullRequest
86 голосов
/ 22 июня 2011

У меня есть вид, в котором есть два текстовых поля, и пользователь может выбрать цвет текста из другого вида на том же экране (через диалоговое окно).

Поэтому, когда пользователь меняет цвет через диалоговое окно, я меняю цвет текста EditText и его подсказки. Но когда в EditText появляется какой-то текст, доступный после того, как этот пользователь выберет другой цвет, этот текст будет иметь этот цвет. Но если я удалю весь этот текст, то цвет HintText будет цвета предыдущего цвета.

Например, в настоящее время, если у меня есть красный цвет в текстовом поле, и пользователь выбирает зеленый цвет, чтобы текст был в зеленом цвете. Но если я удаляю этот текст, текст подсказки становится красным, даже если я изменю цвет подсказки в коде. Эта проблема возникает только тогда, когда там есть текст. если он пуст и текст подсказки есть, проблема не наступит.

Ответы [ 8 ]

317 голосов
/ 27 мая 2012

Просто добавьте это в layout для EditText:

андроида: textColorHint = "# FFFFFF"

53 голосов
/ 22 июня 2011

Используйте это, чтобы изменить цвет подсказки.-

editText.setHintTextColor(getResources().getColor(R.color.white));

Решение вашей проблемы -

editText.addTextChangedListener(new TextWatcher() {
    @Override
    public void onTextChanged(CharSequence arg0, int arg1, int arg2,int arg3){
        //do something
    }

    @Override
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
        //do something
    }

    @Override
    public void afterTextChanged(Editable arg0) {
        if(arg0.toString().length() <= 0) //check if length is equal to zero
            tv.setHintTextColor(getResources().getColor(R.color.white));
    }
});
21 голосов
/ 11 июня 2015

Цвета по умолчанию:

android:textColorHint="@android:color/holo_blue_dark"

Для цветового кода:

android:textColorHint="#33b5e5"
15 голосов
/ 12 апреля 2014

Внутри XML-файла макета Мы можем изменить цвет подсказки .....

android:textColorHint="@android:color/*****"

Вы можете заменить * на цвет или код цвета.

7 голосов
/ 30 июня 2014

Кажется, что EditText применяет hintTextColor, только если текст пустой. Так простое решение будет выглядеть так

Editable text = mEditText.getText();
mEditText.setText(null);
mEditText.setHintTextColor(color);
mEditText.setText(text);

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

4 голосов
/ 24 июня 2014

Программно в Java - как минимум API v14 +

exampleEditText.setHintTextColor(getResources().getColor(R.color.your_color));

2 голосов
/ 24 января 2015

Это как цвет подсказки по умолчанию, работал для меня:

editText.setHintTextColor(Color.GRAY);

0 голосов
/ 09 августа 2018

Вы можете позвонить editText.invalidate() после сброса цвета подсказки.Это может решить вашу проблему.На самом деле SDK обновляет цвет таким же образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...