Je me demandais quelle était la meilleure façon de faire un décompte de caractères en direct d'une zone d'édition de texte sous Android. Je regardais cela mais je n'arrivais pas à y donner un sens.
Pour décrire le problème, j'ai un EditText et j'essaie de limiter les caractères à 150. Je peux le faire avec un filtre d'entrée, mais je veux montrer juste en dessous de la zone de texte le nombre de caractères qu'un utilisateur a entré (Presque comme le fait le débordement de pile en ce moment).
Si quelqu'un pouvait écrire un petit extrait de code d'exemple ou me diriger dans la bonne direction, je l'apprécierais beaucoup.
Vous pouvez effectuer le comptage de caractères à partir du XML lui-même à l'aide de l' encapsuleur TextInputLayout pour EditText introduit dans SupportLibrary v23.1
Enveloppez simplement votre EditText avec un TextInputLayout et définissez CounterEnabled sur true et définissez un counterMaxLength.
Vous obtiendrez un effet matériel comme celui-ci
Vous pouvez utiliser counterOverflowTextAppearance , counterTextAppearance pour styliser le compteur.
ÉDITER
De la documentation Android.
La classe TextInputEditText est fournie pour être utilisée en tant qu'enfant de cette disposition. L'utilisation de TextInputEditText permet à TextInputLayout de mieux contrôler les aspects visuels de toute entrée de texte. Un exemple d'utilisation est le suivant:
TextInputLayout TextInputEditText
la source
Vous pouvez le faire avec des
TextInputLayout
bibliothèques compatibles avec:et terminer:
la source
en xml, ajoutez cet attribut pour editText
en java, ajoutez cet auditeur
la source
C'est très simple Suivez les instructions ci-dessous:
==== Ajoutez-les à vos importations ===
===== Définissez ceci =====
========== À l'intérieur lors de la création =====
la source
la source
Définissez simplement ces 2 lignes
TextInputLayout
dans votre fichier XML:la source
Cette solution utilise
Kotlin
et affiche le nombre de caractères restants. De plus, si le nombre actuel de caractères dépasse la limite de 50, la couleur du texte deviendra rouge.Kotlin
N'oubliez pas non plus d'ajouter le
TextWatcher
à votreEditText
la source
Vous pouvez ajouter un compteur à votre TextInputEditText encapsulé dans un TextInputLayout. Comme vous pouvez le voir dans l'exemple,
counterEnabled
active cette fonctionnalité etcounterMaxLengh
définit le nombre de caractères pour elle.la source
J'ai rencontré le même problème et j'ai essayé la méthode de Cameron. Cela fonctionne mais il y a un bug mineur: si l'utilisateur utilise le copier-coller, il ne compte pas les caractères. Je suggère donc de faire après le changement de texte, comme ci-dessous:
la source
Utilisez Android: maxLength = "140"
Cela devrait fonctionner. :)
J'espère que cela pourra aider
la source
Essayez de faire quelque chose comme ça.
Cette solution peut être plus performante que l'obtention de CharSequence.length. Chaque fois que vous appuyez sur le clavier virtuel, l'événement se déclenche; par conséquent, si vous faites une longueur, il comptera chaque fois la CharSequence, ce qui peut ralentir si vous commencez à entrer dans de grandes CharSequnces. L'écouteur d'événement sur le changement de texte vire au comptage avant et après. Cela fonctionne bien pour les valeurs d'incrémentation et de décrémentation
la source
essaye ça
»
la source
Voie claire;
la source