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.
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));
}
});
Ajoutez simplement ceci dans votre layout
pour la EditText
:
Android: textColorHint = "# FFFFFF"
Couleurs par défaut:
Android:textColorHint="@Android:color/holo_blue_dark"
Pour le code de couleur:
Android:textColorHint="#33b5e5"
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.
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.
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.