22

Je viens de rencontrer un problème que je ne sais pas comment résoudre. Il semble stupide mais je ne peux pas trouver un moyen de le réparer.Comment revenir au style par défaut sur EditText si j'applique un arrière-plan?

J'ai un formulaire dans android avec plusieurs EditText et quand vous soumettez le formulaire il vérifie ces EditText et s'ils ont de mauvaises données je change l'EditText en bordure rouge (en appliquant une image de neufpatch).

myEditText.setBackgroundResource(R.drawable.edittext_red); 

Le problème est, je veux restaurer le style par défaut Android lorsque l'utilisateur modifie la EditText, mais je ne sais pas comment le faire. si je le fais:

myEditText.setBackgroundResource(0); 

Il va simplement supprimer tout et ce n'est pas ce que je veux.

Merci!

Répondre

46

Tout d'abord, avant d'appeler setBackgroundResource avec votre propre ninepatch, stocker l'arrière-plan original de la EditText, comme ceci:

Drawable originalDrawable = myEditText.getBackground(); 

Ensuite, si l'utilisateur a entré les données erronées, vous pouvez configurer votre ninepatch bordure rouge :

myEditText.setBackgroundResource(R.drawable.edittext_red); 

Et plus tard, quand vous voulez restaurer l'apparence de la EditText, utilisez le drawable stocké:

myEditText.setBackgroundDrawable(originalDrawable); 

Alternativement vous pouvez référencer l'arrière-plan par défaut Android EditText directement comme ceci:

myEditText.setBackgroundResource(android.R.drawable.edit_text); 

A androiddrawables vous pouvez voir comment les différentes dessinables recherchent les différentes versions d'Android, et d'obtenir leur identifiant de ressource. Cette méthode devrait fonctionner pour tous dessinables, pas seulement EditText

Ces (et d'autres ressources Android) peuvent également être trouvés sur votre propre système, dans le dossier android-sdk dans

chemin < dans le dossier android-sdk>/android-sdk/platforms/android- < Niveau de l'API>/data/res/

+0

Hey SeRPRo- vous devez marquer la réponse de videre comme correcte, elle vous donnera les deux points et informera les futurs utilisateurs que c'était la solution. –

+0

Désolé, je ne l'ai pas marqué avant parce qu'il a dit que je dois attendre .. – SERPRO

+5

Votre solution alternative était LA réponse que je cherchais. C'était le moyen le plus simple et le plus simple de restaurer l'aspect original de votre EditText (même la taille est restituée!). Mais au lieu d'utiliser editbox_background_normal, je viens d'utiliser android.R.drawable.edit_text – faul

Questions connexes