setHintTextColor () w EditText

88

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 EditTexttekstu i jego podpowiedź. Ale jeśli jakiś tekst jest dostępny EditTextpo 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.

kartik trivedi
źródło

Odpowiedzi:

57

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));
    }
});
Sunil Kumar Sahoo
źródło
7
Skąd takie skomplikowane rozwiązanie, które można wykonać w pół linii, jak odpowiedział anandc poniżej.
zeeshan
8
bo to rozwiązanie nie rozwiązuje jego problemu?
evaristokbza
318

Po prostu dodaj to w swoim layoutdla EditText:

android: textColorHint = "# FFFFFF"

Anand Chavan
źródło
9
Jak to ma rozwiązać pytanie OP? pytanie jak zmienić kolor podpowiedzi DYNAMICZNIE, gdy w EditText jest jakiś tekst i nie wiem, jak to rozwiąże ...
evaristokbza
5
Przeczytaj uważnie pytanie. autor nie poprosił w odpowiedni sposób.
Anand Chavan,
22

Kolory domyślne:

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

Dla kodu koloru:

android:textColorHint="#33b5e5"
kiran kumar
źródło
nie bierz tych zmian do siebie. Edycja zasadniczo poprawia czytelność odpowiedzi i / lub poprawia jej kompletność. Ponadto, jeśli ma to zastosowanie, dodaj wyjaśnienie kodu w razie potrzeby, takie jak co robi lub jaki problem napotkał OP itp. :)
Sufian
15

Wewnątrz pliku XML układu możemy zmienić kolor podpowiedzi .....

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

możesz zastąpić * kodem koloru lub koloru.

Akhil s
źródło
7

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.

Dishan
źródło
6

Programowo w Javie - przynajmniej API v14 +

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

Michał
źródło
1
na moim Samsung S5 apiV19 ten sam problem, jak wspomniał @dishan: setHintTextColor(color)nie działa w przypadku, gdy jest jakiś tekst, NAWET jeśli jest "".
Dmitry Gryazin
2

To jest jak domyślny kolor podpowiedzi, działał dla mnie:

editText.setHintTextColor(Color.GRAY);

karan
źródło
0

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.

nowicjusz
źródło