J'ai besoin d'un EditText
qui ressemble à ceci onError:
appeler onError ressemble à ceci à la place:
Remarque: l'application fonctionne sur le SDK 19 (4.4.2)
SDK min est 1
Existe-t-il une méthode similaire à setError qui fait cela automatiquement ou dois-je écrire le code pour cela?
Je vous remercie
EditText
. Plus probablement, vous aurez besoin de quelque chose qui l'enveloppeEditText
ou y ajoute autrement. Voir github.com/rengwuxian/MaterialEditText .Réponses:
Il n'est pas nécessaire d'utiliser une bibliothèque tierce puisque Google a introduit le
TextInputLayout
dans le cadre dudesign-support-library
.En suivant un exemple basique:
Disposition
Remarque: en définissant
app:errorEnabled="true"
comme attribut deTextInputLayout
, sa taille ne changera pas une fois qu'une erreur est affichée - donc cela bloque essentiellement l'espace.Code
Afin d'afficher l'erreur ci-dessous,
EditText
vous devez simplement appeler#setError
leTextInputLayout
(PAS sur l'enfantEditText
):Résultat
Pour masquer l'erreur et réinitialiser la teinte, appelez simplement
til.setError(null)
.Remarque
Pour utiliser le,
TextInputLayout
vous devez ajouter les éléments suivants à vosbuild.gradle
dépendances:Définition d'une couleur personnalisée
Par défaut, la ligne du
EditText
sera rouge. Si vous avez besoin d'afficher une couleur différente, vous pouvez utiliser le code suivant dès que vous appelezsetError
.Pour l'effacer, appelez simplement la
clearColorFilter
fonction, comme ceci:la source
textInputLayout.setError("Error messsage")
la couleur duEditText
devrait devenir rouge. Pour le réinitialiser, il suffit d'appelertextInputLayout.setError(null)
.editText.getBackground().setColorFilter(getResources().getColor(R.color.red_500_primary), PorterDuff.Mode.SRC_ATOP);
n'est plus nécessaire avec la dernière bibliothèque de supportEditText
, pas leTextInputLayout
. J'ai vu cette réponse et je ne pouvais toujours pas comprendre ce que j'avais besoin de changer. Chose très facile à manquer.Appelez
myTextInputLayout.setError()
au lieu demyEditText.setError()
.Ces conteneurs et confinements ont une double fonctionnalité sur les erreurs de réglage. La fonctionnalité dont vous avez besoin est celle de Container. Mais vous pourriez avoir besoin d'une version minimale de 23 pour cela.
la source
Votre
EditText
devrait être enveloppé dans unTextInputLayout
Pour obtenir un message d'erreur comme vous le souhaitez, définissez erreur sur
TextInputLayout
Vous devez ajouter une dépendance de bibliothèque de support de conception. Ajoutez cette ligne dans vos dépendances gradle
la source
La réponse de reVerse est excellente, mais elle n'a pas indiqué comment supprimer l'info-bulle d'erreur flottante
Vous devrez
edittext.setError(null)
supprimer cela.De plus, comme quelqu'un l'a souligné, vous n'avez pas besoin
TextInputLayout.setErrorEnabled(true)
Disposition
Code
la source
la source
Si quelqu'un est toujours confronté à l'erreur en utilisant la bibliothèque de conception de Google comme mentionné dans la réponse, veuillez l'utiliser comme indiqué par @h_k, qui est -
Au lieu d'appeler setError sur TextInputLayout , vous pouvez utiliser setError sur EditText lui-même.
la source
la source