web-dev-qa-db-fra.com

setHintTextColor () dans EditText

J'ai une vue dans laquelle il y a deux zones de texte, et l'utilisateur peut sélectionner la couleur du texte à partir d'une autre vue sur le même écran (via une boîte de dialogue).

Ainsi, lorsque l'utilisateur change de couleur via une boîte de dialogue, je change la couleur du texte EditText et de son indice. Mais quand il y a du texte disponible dans EditText après que cet utilisateur a choisi une autre couleur, ce texte arrive dans cette couleur. Mais si je supprime tout ce texte, la couleur de HintText est celle de la couleur précédente.

Par exemple, si j’ai la couleur rouge dans la zone de texte et si l’utilisateur sélectionne la couleur verte, le texte y est affiché en vert. Mais si je supprime ce texte, les indices sont affichés en rouge, même si je change la couleur d’indice dans le code. Ce problème ne vient que quand il y a du texte. s'il est vide et qu'il y a un indice, le problème ne vient pas.

85
kartik trivedi

Utilisez-le pour changer la couleur de conseil. -

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

Solution à votre problème -

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));
    }
});
51
Sunil Kumar Sahoo

Ajoutez simplement ceci dans votre layout pour la EditText:

Android: textColorHint = "# FFFFFF"

317
Anand Chavan

Couleurs par défaut:

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

Pour le code de couleur:

Android:textColorHint="#33b5e5"
21
kiran kumar

Fichier de présentation interne XML Nous pouvons changer la couleur de l'indice .....

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

vous pouvez remplacer * par une couleur ou un code de couleur.

15
Akhil s

Il semble que EditText applique le hintTextColor uniquement si le texte est vide. Solution si simple sera comme ça

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

Si vous avez plusieurs champs, vous pouvez étendre EditText et écrire une méthode qui exécute cette logique et utiliser cette méthode à la place. 

7
dishan

Vous pouvez appeler editText.invalidate() après avoir réinitialisé la couleur de conseil. Cela pourrait résoudre votre problème. En réalité, le SDK met à jour la couleur de la même manière.

0
freshomer