setHintTextColor () in EditText


88

Ho Vista in cui ci sono due caselle di testo e l'utente può selezionare il colore del testo da un'altra vista sullo stesso schermo (tramite la finestra di dialogo).

Quindi, quando l'utente cambia colore tramite la finestra di dialogo, sto cambiando il colore del EditTexttesto e il suo suggerimento. Ma quando è disponibile del testo EditTextdopo che l'utente ha selezionato un altro colore, il testo avrà quel colore. Ma se rimuovo tutto quel testo, il colore di HintText è quello del colore precedente.

Ad esempio, attualmente se ho il colore rosso nella casella di testo e l'utente seleziona il colore verde in modo che il testo sia di colore verde. Ma se rimuovo quel testo, il testo del suggerimento diventa rosso anche se cambio il colore del suggerimento nel codice. Questo problema si verifica solo quando c'è del testo lì. se è vuoto e il testo del suggerimento è presente, il problema non si presenta.


Risposte:


56

Usalo per cambiare il colore del suggerimento. -

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

Soluzione per il tuo problema -

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
Perché una soluzione così complicata che può essere realizzata in mezza riga, come ha risposto anandc di seguito.
zeeshan

8
perché quella soluzione non risolve il suo problema?
evaristokbza

318

Aggiungi semplicemente questo nel tuo layoutper EditText:

android: textColorHint = "# FFFFFF"


9
Come dovrebbe risolvere la domanda di OP? la domanda è su come cambiare il colore del suggerimento IN MODO DINAMICO quando l'EditText ha del testo e non vedo come questo lo risolverà ...
evaristokbza

5
Si prega di leggere attentamente la domanda. l'autore non ha chiesto in modo appropriato.
Anand Chavan,

22

Colori predefiniti:

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

Per il codice colore:

android:textColorHint="#33b5e5"

non prendere queste modifiche sul personale. La modifica fondamentalmente migliora la leggibilità della risposta e / o ne migliora la completezza. Inoltre, se applicabile, aggiungi spiegazioni sul codice dove necessario, come cosa fa o quale problema stava affrontando l'OP, ecc. :)
Sufian

15

All'interno del file Xml del layout possiamo cambiare il colore del suggerimento .....

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

puoi sostituire * con colore o codice colore.


7

Sembra che EditText applichi hintTextColor solo se il testo è vuoto. Quindi la soluzione semplice sarà così

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

Se hai più campi, puoi estendere l'EditText e scrivere un metodo che esegua questa logica e utilizzare invece quel metodo.


6

A livello di codice in Java: almeno API v14 +

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


1
sul mio Samsung S5 apiV19 lo stesso problema, come ha detto @dishan: setHintTextColor(color)non funziona nel caso ci sia del testo, ANCHE se lo è "".
Dmitry Gryazin

2

Questo è come il colore del suggerimento predefinito, ha funzionato per me:

editText.setHintTextColor(Color.GRAY);


0

Potresti chiamare editText.invalidate()dopo aver ripristinato il colore del suggerimento. Questo potrebbe risolvere il tuo problema. In realtà l'SDK aggiorna il colore allo stesso modo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.