9
votes

Autoriser seulement 1 caractère dans editext et toujours écraser lorsque l'utilisateur l'entrait

J'ai besoin de créer un eittext qui n'accepterait qu'un caractère et un seul caractère (lettre / alpha). Et si l'utilisateur entre dans d'autres caractères, il devrait remplacer l'existence (comme la méthode de remplacement de texte d'écrivie d'entrée de texte avec 1 symbole autorisé).

  1. Je sais comment définir la longueur maximale du texte dans les propriétés. Mais si je l'ai mis à 1, alors aucun autre caractère n'a pu être inséré avant que l'utilisateur supprime un existant. Mais je veux remplacer le caractère existant avec ce nouveau entré un automatiquement sans suppression manuelle. Comment faire ça?

  2. Je sais comment définir la propriété pour autoriser uniquement les chiffres dans un edittext , mais je Je ne peux pas comprendre comment autoriser uniquement des caractères. Donc, la deuxième question est de savoir comment autoriser uniquement les caractères dans editext ?

    J'utilise actuellement un editext avec la taille du texte maximum = 2 avec le code suivant: xxx

    Le point est , Lorsqu'un utilisateur entre un deuxième caractère, le premier devrait être supprimé. Faire la taille du texte sur 2 permet à l'utilisateur de saisir un autre caractère après que l'on a déjà été entré.

    Je ne comprends pas vraiment comment ça marche mais ça marche :). Et en plus, je devais faire preuve de curseur dans editext vers la dernière position car elle va toujours commencer, ce qui ne peut pas entrer quelque chose du tout. Je n'ai pas compris pourquoi est-ce que cela soit.

    point principal de cette solution est qu'il a une taille de 2 caractères eittext , mais je le veux 1-charcuterie. Et il permet de saisir n'importe quoi en plus des lettres (caractères / alpha) et je ne veux que des caractères.

    Utilisation de l'avis fourni par SGARMAN et PARTIE.SLETTER () Fonction, AfterTextChanged La méthode a l'air de cette façon maintenant: xxx

    J'ai découvert qu'utiliser sélection.Setselection n'est pas requis dans ce cas. Maintenant, il a un filtre permettant une entrée de lettres uniquement. C'est presque la réponse que je veux. La seule chose qui reste est de savoir comment faire la même chose avec 1-symbole de taille eittext ?


0 commentaires

3 Réponses :


4
votes

Essayez:

s.delete(0, 1);
Selection.setSelection(s, s.length());


1 commentaires

Avec la longueur de texte = 2, il fait exactement la même chose. Avec longueur = 1, il ne fonctionne pas du tout. C'est juste une solution alternative sans utiliser de lien avec et (EDITETTER). Merci pour la pointe mais ce n'est pas la réponse.



11
votes

Vous pouvez ajouter cette ligne unique à votre fichier de mise en page XML, et Android fera le matériel pour vous

<EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="text"
    android:maxLength="1" >


1 commentaires

Veuillez lire ma question plus attentivement - ce n'est pas environ limite par 1 caractères uniquement. Votre chemin ne va pas travailler.



3
votes

Je voulais faire la même chose et j'ai utilisé votre code dans AfterextChanged (modifiable S) et définir un filtre sur l'Edittext comme celui-ci. XXX

Il a fonctionné comme nous le voulions. < / p>


0 commentaires