2011-06-22 11 views
84

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 (poprzez okno dialogowe).setHintTextColor() w EditText

Tak więc, gdy użytkownik zmienia kolor za pomocą okna dialogowego, zmieniam kolor tekstu i jego podpowiedzi pod numerem EditText. Ale kiedy jest jakiś tekst dostępny w EditText po tym, jak użytkownik wybierze inny kolor, to tekst ten będzie w tym kolorze. Ale jeśli usunę cały ten tekst, kolor HintText jest koloru poprzedniego koloru.

Na przykład obecnie, jeśli mam czerwony kolor w polu tekstowym, a użytkownik wybiera kolor zielony, więc tekst jest tam w kolorze zielonym. Ale jeśli usunę ten tekst, to podpowiedź tekstu pojawi się na czerwono, nawet jeśli I zmieni kolor podpowiedzi w kodzie. Ten problem pojawia się tylko wtedy, gdy jest tam jakiś tekst. jeśli jest puste i znajduje się tekst podpowiedzi, problem nie nadchodzi.

+1

to sprawdzić http://stackoverflow.com/questions/25134463/edittext-unable-to-change-the-text-color/25134499#25134499 – Nabin

Odpowiedz

49

Służy do zmiany koloru podpowiedzi. -

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

rozwiązanie 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)); 
    } 
}); 
+7

Dlaczego tak skomplikowane rozwiązanie, które może być wykonane w pół linii, jak anandc odpowiedział poniżej. – zeeshan

+8

, ponieważ to rozwiązanie nie rozwiązuje jego problemu? – evaristokbza

317

Wystarczy dodać ten w swojej layout dla EditText:

android: textColorHint = "# FFFFFF"

+8

Jak to ma rozwiązać problem OP?pytanie dotyczy zmiany koloru podpowiedzi DYNAMICZNIE, gdy EditText ma jakiś tekst i nie widzę, jak to rozwiąże ... – evaristokbza

+5

Przeczytaj uważnie to pytanie. autor nie zapytał w odpowiedni sposób. –

+1

ta odpowiedź powinna być przyjęta jako poprawna odpowiedź. –

15

Inside Layout Xml File Możemy zmienić kolor wskazówek .....

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

można zastąpić * z kolorem lub kod koloru.

4

programowo w Javie - Przynajmniej API V14 +

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

+1

na moim samsung S5 apiV19 ten sam problem, jak @dishan wspomniano: 'setHintTextColor (kolor)' nie działa w przypadku, gdy jest jakiś tekst, NAWET jeśli to '' ". –

7

Wydaje się, że EditText zastosować hintTextColor tylko wtedy, gdy tekst jest pusty. Tak proste rozwiązanie będzie tak

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

Jeśli masz wiele pól, można przedłużyć EditText i napisać metodę, która wykonuje tę logikę i używać tej metody zamiast.

2

To jak barwy domyślną podpowiedź, pracował dla mnie:

editText.setHintTextColor(Color.GRAY);

21

domyślne kolory:

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

Dla Kod koloru:

android:textColorHint="#33b5e5" 
+0

nie wprowadzaj tych zmian osobiście. Edycja zasadniczo poprawia czytelność odpowiedzi i/lub poprawia jej kompletność. Jeśli to konieczne, dodaj wyjaśnienie kodu, np. Co się dzieje lub jaki problem napotkał OP itp. :) – Sufian