setHintTextColor () у EditText


88

У мене є View, у якому є два текстових поля, і користувач може вибрати колір тексту з іншого подання на тому ж екрані (через діалогове вікно).

Отже, коли користувач змінює колір через діалогове вікно, я змінюю колір EditTextтексту та його підказку. Але коли доступний певний текст EditTextпісля того, як користувач вибере інший колір, тоді цей текст надходить у такому кольорі. Але якщо я видалю весь цей текст, то колір HintText - це колір попереднього кольору.

Наприклад, в даний час, якщо в текстовому полі є червоний колір, і користувач вибирає зелений колір, щоб текст був там зеленим. Але якщо я видалю цей текст, тоді текст підказки буде червоним, навіть якщо я зміню колір підказки в коді. Ця проблема виникає лише тоді, коли там є текст. якщо він порожній і текст підказки є, тоді проблема не виникає.


1
Перегляньте це stackoverflow.com/questions/25134463/…
Набін

Відповіді:


57

Використовуйте це, щоб змінити колір підказки. -

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));
    }
});

7
Чому таке складне рішення, яке можна досягти в піврядку, як відповів anandc нижче.
zeeshan

8
тому що це рішення не вирішує його проблеми?
evaristokbza

318

Просто додайте це у свій layoutдля EditText:

android: textColorHint = "# FFFFFF"


9
Як це має вирішити питання ОП? питання в тому, як змінити колір підказки ДИНАМІЧНО, коли в EditText є якийсь текст, і я не бачу, як це вирішить ...
evaristokbza

5
Будь ласка, уважно прочитайте питання. автор не запитав належним чином.
Ананд Чаван

22

Кольори за замовчуванням:

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

Для колірного коду:

android:textColorHint="#33b5e5"

не сприймайте ці зміни особисто. Редагування в основному покращує читабельність відповіді та / або покращує її повноту. Також, якщо це можливо, додайте пояснення щодо коду там, де це потрібно, наприклад, що робить або з якою проблемою стикався ОП тощо :)
Суфіан

15

XML-файл всередині макета Ми можемо змінити колір підказки .....

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

Ви можете замінити * кольором або кольоровим кодом.


7

Здається, EditText застосовує hintTextColor, лише якщо текст порожній. Тож просте рішення буде таким

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

Якщо у вас є кілька полів, ви можете розширити EditText і написати метод, який виконує цю логіку, і замість цього використовувати цей метод.


6

Програмно на Java - принаймні API v14 +

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


1
на моєму samsung S5 apiV19 така ж проблема, як згадував @dishan: setHintTextColor(color)не працює, якщо є якийсь текст, НАВАТИ якщо він є "".
Дмитро Грязін

2

Це як колір підказки за замовчуванням, який працював для мене:

editText.setHintTextColor(Color.GRAY);


0

Ви можете зателефонувати editText.invalidate()після скидання кольору підказки. Це може вирішити вашу проблему. Насправді SDK оновлює колір таким же чином.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.