772 votes

Quel est le meilleur moyen de limiter la longueur du texte d'un EditText sous Android ?

Quelle est la meilleure façon de limiter la longueur du texte d'une EditText dans Android ?

Y a-t-il un moyen de faire cela via xml ?

1 votes

Je voulais définir le nombre maximum de caractères de mon EditText. Au début, il n'était pas évident que la limite de longueur du texte était la même chose. (Juste une note pour un autre voyageur confus).

0 votes

Le site la réponse correcte est ici : stackoverflow.com/a/19222238/276949 . Cette réponse limite la longueur ET empêche le tampon de se remplir continuellement après avoir atteint la limite, ce qui permet à l'utilisateur d'avoir accès à l'information. touche retour arrière pour fonctionner correctement.

1501voto

Berdon Points 5388

Documentation

Exemple

android:maxLength="10"

28 votes

D'oh ! La même chose m'est arrivée. J'ai regardé le code, et il n'y a pas de méthode setMaxLength.

1 votes

Que fait l'addition ici ? Il renvoie simplement à cette page.

1 votes

Je pense que quelqu'un a pensé que ce serait intelligent d'avoir la page "cliquez ici" liée à ici. Lorsque j'ai écrit la réponse à l'origine, elle était liée à la page des développeurs Android, mais des modifications ont été apportées depuis. Je vais parcourir l'historique et demander une modification pour renvoyer le lien.

365voto

jerry Points 1531

Utiliser un filtre d'entrée pour limiter la longueur maximale d'une vue de texte.

TextView editEntryView = new TextView(...);
InputFilter[] filterArray = new InputFilter[1];
filterArray[0] = new InputFilter.LengthFilter(8);
editEntryView.setFilters(filterArray);

6 votes

C'est très utile si quelqu'un a déjà fait des InputFilter . Il supplante android:maxlength dans le fichier xml, nous devons donc ajouter LengthFilter de cette façon.

1 votes

Je pense que votre réponse est la meilleure, car elle est plus dynamique, +1

215voto

Emran Hamza Points 934
EditText editText = new EditText(this);
int maxLength = 3;    
editText.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLength)});

0 votes

C'est similaire à la façon dont Android le fait avec le xml.

4 votes

Comment puis-je définir la longueur minimale ?

0 votes

@AkhilaMadari, probablement avec TextWatcher .

69voto

goto10 Points 3235

Une note à l'attention des personnes qui utilisent déjà un filtre d'entrée personnalisé et également vous voulez limiter la longueur maximale :

Lorsque vous attribuez des filtres d'entrée dans le code, tous les filtres d'entrée précédemment définis sont effacés, y compris ceux définis avec la fonction android:maxLength . Je l'ai découvert en essayant d'utiliser un filtre de saisie personnalisé pour empêcher l'utilisation de certains caractères que nous n'autorisons pas dans un champ de mot de passe. Après avoir défini ce filtre avec setFilters, la longueur maximale n'était plus respectée. La solution a consisté à définir maxLength et mon filtre personnalisé de manière programmatique. Quelque chose comme ceci :

myEditText.setFilters(new InputFilter[] {
        new PasswordCharFilter(), new InputFilter.LengthFilter(20)
});

5 votes

Vous pourriez d'abord récupérer les filtres existants comme , InputFilter[] existingFilters = editText.getFilters() ; Puis ajouter votre filtre avec les filtres existants.

41voto

ramo2712 Points 138
TextView tv = new TextView(this);
tv.setFilters(new InputFilter[]{ new InputFilter.LengthFilter(250) });

7 votes

Bien sûr, seulement pour Android

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X