Mam Widok, w którym znajdują się dwa pola tekstowe, a użytkownik może wybrać kolor tekstu z innego widoku na tym samym ekranie (przez okno dialogowe).
Kiedy więc użytkownik zmienia kolor za pomocą okna dialogowego, zmieniam kolor EditText
tekstu i jego podpowiedź. Ale jeśli jakiś tekst jest dostępny EditText
po tym, jak użytkownik wybierze inny kolor, ten tekst będzie miał ten kolor. Ale jeśli usunę cały ten tekst, kolor HintText będzie taki sam jak poprzedniego koloru.
Na przykład, jeśli obecnie mam kolor czerwony w polu tekstowym, a użytkownik wybiera kolor zielony, tekst jest tam w kolorze zielonym. Ale jeśli usunę ten tekst, tekst podpowiedzi będzie miał czerwony kolor, nawet jeśli zmienię kolor podpowiedzi w kodzie. Ten problem pojawia się tylko wtedy, gdy jest tam jakiś tekst. jeśli jest pusty i jest tam tekst podpowiedzi, problem nie nadchodzi.
źródło
Odpowiedzi:
Użyj tego, aby zmienić kolor podpowiedzi. -
editText.setHintTextColor(getResources().getColor(R.color.white));
Rozwiązanie Twojego problemu -
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)); } });
źródło
Po prostu dodaj to w swoim
layout
dlaEditText
:źródło
Kolory domyślne:
android:textColorHint="@android:color/holo_blue_dark"
Dla kodu koloru:
android:textColorHint="#33b5e5"
źródło
Wewnątrz pliku XML układu możemy zmienić kolor podpowiedzi .....
android:textColorHint="@android:color/*****"
możesz zastąpić * kodem koloru lub koloru.
źródło
Wydaje się, że EditText zastosować hintTextColor tylko wtedy, gdy tekst jest pusty. Takie proste będzie rozwiązanie
Editable text = mEditText.getText(); mEditText.setText(null); mEditText.setHintTextColor(color); mEditText.setText(text);
Jeśli masz wiele pól, możesz rozszerzyć EditText i napisać metodę, która wykonuje tę logikę i zamiast tego użyć tej metody.
źródło
Programowo w Javie - przynajmniej API v14 +
exampleEditText.setHintTextColor(getResources().getColor(R.color.your_color));
źródło
setHintTextColor(color)
nie działa w przypadku, gdy jest jakiś tekst, NAWET jeśli jest""
.To jest jak domyślny kolor podpowiedzi, działał dla mnie:
editText.setHintTextColor(Color.GRAY);
źródło
Możesz zadzwonić
editText.invalidate()
po zresetowaniu koloru podpowiedzi. To mogłoby rozwiązać Twój problem. W rzeczywistości SDK aktualizuje kolor w ten sam sposób.źródło