Il s'agit d'une réponse légèrement plus générale avec plus d'explications pour les futurs téléspectateurs.
Ajouter un écouteur de texte modifié
Si vous souhaitez trouver la longueur du texte ou faire autre chose après que le texte a été modifié, vous pouvez ajouter un écouteur de texte modifié à votre texte d'édition.
EditText editText = (EditText) findViewById(R.id.testEditText);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable editable) {
}
});
L'auditeur a besoin d' un TextWatcher
, ce qui nécessite trois méthodes pour être surchargée: beforeTextChanged
, onTextChanged
et afterTextChanged
.
Compter les caractères
Vous pouvez obtenir le nombre de caractères dans onTextChanged
ou beforeTextChanged
avec
charSequence.length()
ou afterTextChanged
avec
editable.length()
Signification des méthodes
Les paramètres sont un peu déroutants alors voici une petite explication supplémentaire.
beforeTextChanged
beforeTextChanged(CharSequence charSequence, int start, int count, int after)
charSequence
: Il s'agit du contenu du texte avant la modification en attente. Vous ne devriez pas essayer de le changer.
start
: Il s'agit de l'index de l'endroit où le nouveau texte sera inséré. Si une plage est sélectionnée, il s'agit de l'index de début de la plage.
count
: Il s'agit de la longueur du texte sélectionné qui va être remplacé. Si rien n'est sélectionné, ce count
sera le cas 0
.
after
: c'est la longueur du texte à insérer.
onTextChanged
onTextChanged(CharSequence charSequence, int start, int before, int count)
charSequence
: Il s'agit du contenu du texte après la modification. Vous ne devez pas essayer de modifier cette valeur ici. Modifiez l'entrée si vous editable
en afterTextChanged
avez besoin.
start
: Il s'agit de l'index du début de l'endroit où le nouveau texte a été inséré.
before
: Ceci est l'ancienne valeur. C'est la longueur du texte précédemment sélectionné qui a été remplacée. Il s'agit de la même valeur que count
dans beforeTextChanged
.
count
: Il s'agit de la longueur du texte inséré. Il s'agit de la même valeur que after
dans beforeTextChanged
.
afterTextChanged
afterTextChanged(Editable editable)
Comme onTextChanged
, ceci est appelé après que le changement a déjà été effectué. Cependant, maintenant le texte peut être modifié.
editable
: Ceci est le texte modifiable du EditText
. Si vous le changez, cependant, vous devez faire attention à ne pas entrer dans une boucle infinie. Voir la documentation pour plus de détails.