setHintTextColor() в EditText
У меня есть вид, в котором есть два текстовых поля, и пользователь может выбрать цвет текста из другого вида на том же экране (через диалоговое окно).
Поэтому, когда пользователь меняет цвет через диалоговое окно, я меняю цвет EditText
текст и его подсказка. Но когда есть какой-то текст доступен в EditText
после того, как этот пользователь выберет другой цвет, этот текст придет в этом цвете. Но если я удаляю весь этот текст, то цвет HintText - это цвет предыдущего цвета.
Например, в настоящее время, если у меня есть красный цвет в текстовом поле, и пользователь выбирает зеленый цвет, чтобы текст был в зеленом цвете. Но если я удаляю этот текст, текст подсказки становится красным, даже если я изменяю цвет подсказки в коде. Эта проблема возникает только тогда, когда там есть текст. если он пуст и текст подсказки есть, то проблема не наступит.
8 ответов
Используйте это, чтобы изменить цвет подсказки. -
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));
}
});
Просто добавьте это в свой layout
для EditText
:
андроид:textColorHint="#FFFFFF"
Цвета по умолчанию:
android:textColorHint="@android:color/holo_blue_dark"
Для цветового кода:
android:textColorHint="#33b5e5"
Внутри XML-файла макета мы можем изменить цвет подсказки.....
android:textColorHint="@android:color/*****"
Вы можете заменить * на цвет или код цвета.
Кажется, что EditText применяет hintTextColor, только если текст пуст. Так простое решение будет так
Editable text = mEditText.getText();
mEditText.setText(null);
mEditText.setHintTextColor(color);
mEditText.setText(text);
Если у вас есть несколько полей, вы можете расширить EditText и написать метод, который выполняет эту логику, и использовать этот метод вместо этого.
Программно на Java - по крайней мере API v14+
exampleEditText.setHintTextColor(getResources().getColor(R.color.your_color));
Это похоже на цвет подсказки по умолчанию, работает для меня:
editText.setHintTextColor(Color.GRAY);
Вы могли бы позвонить editText.invalidate()
после сброса цвета подсказки. Это может решить вашу проблему. На самом деле SDK обновляет цвет таким же образом.