2013-05-30 2 views
1

J'ai un texte d'édition que je valide. Si les données saisies ne correspondent pas au format, je mets l'arrière-plan au rouge, quand il coresponds, je le remets au gris clair, mais le rectangle disparaît. Je me demandais si je pouvais réinitialiser ses propriétés à leurs valeurs orignal lorsque les données entrées ont le format correct. C'est ce que je fais maintenantComment réinitialiser le style d'un edittext?

EditText name = (EditText) findViewById(R.id.Name); 
if (name.getText().length() < 1) 
{ 
    error = true; 
    unit.setBackgroundColor(Color.RED); 
} 
else 
{ 
    //instead of this line reset edittext properties 
    unit.setBackgroundColor(Color.LTGRAY); 
} 
+0

Que voulez-vous dire par réinitialisation? – MDMalik

+0

Que voulez-vous dire par «le réactangle disparaît»? Donc, lorsque vous le réglez sur RED tout va bien, mais quand vous le réglez sur LTGRAY, la bordure autour de la boîte disparaît? – randomizer

+0

oui la bordure disparaît – Liviu

Répondre

0

Vous pouvez:

editText.setText(""); 
+0

je veux réinitialiser la mise en page pas le texte, en retournant l'arrière-plan à son style original – Liviu

+0

D'accord, final Dessine oldBackground = activity.findViewById (id) .getBackground(); if (correct) {text.setBackgroundDrawable (oldBackground);} – SamDroid

+0

la frontière disparaît toujours – Liviu

0

Je vous recommande d'utiliser la méthode setError(), qui affiche un message d'erreur au-dessus du EditText et supprime automatiquement lorsque le contenu EditText changez. C'est une manière standard de montrer à l'utilisateur que la validation a échoué.

+0

Je suis obligé de mettre l'arrière-plan en rouge, puis revenir à l'édition originale edittext, mon problème est que la frontière disparaît lorsque vous revenez à la couleur de fond d'origine – Liviu

0

Vous modifiez l'arrière-plan EditText afin de remplacer l'arrière-plan par défaut d'Android.
vous devez le changer manuellement à un autre fond.
vous pouvez l'enregistrer en utilisant la méthode getBackground() dans EditText.

0

Vous pouvez enregistrer l'état du editText avant de le changer et de restauration lorsque vous avez besoin:

private Drawable originalDrawable; 

EditText name = (EditText) findViewById(R.id.Name); 
if (name.getText().length() < 1) { 
    if (originalDrawable == null) { 
     originalDrawable = unit.getBackground(); 
    } 
    error = true; 
    unit.setBackgroundColor(Color.RED); 
} 
else { 
    //reset editText 
    text.setBackgroundDrawable(originalDrawable); 
} 
Questions connexes