Dans Android EditText, comment faire pour forcer l'écriture en majuscules?
Dans mon application Android, j'ai différents EditText
où l'utilisateur peut entrer des informations. Mais j'ai besoin de forcer l'utilisateur à écrire en lettres majuscules.
Connaissez-vous une fonction pour faire cela?
Vous devez vous connecter pour publier un commentaire.
Android a fait un construit-dans InputFilter juste pour cette!
Être prudent,
setFilters
réinitialiser tous les autres attributs qui ont été mis en via XML (c'est à diremaxLines
,inputType
,imeOptinos
...). Pour éviter cela, vous ajouter de Filtre(s) à celles qui existent déjà.edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
bien.edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
maxLength
), essayez d'ajouter de laInputFilter.AllCaps()
àeditText.getFilters
tableau. Voir stackoverflow.com/a/18934659/3890983android:inputType="text|textCapCharacters"
editText.filters = editText.filters + InputFilter.AllCaps()
editText.filters += InputFilter.AllCaps()
Kotlin est merveilleux! <3Si vous voulez
pour forcer l'utilisateur à écriremajuscules par défaut dans votre EditText, vous avez juste besoin d'ajouterandroid:inputType="textCapCharacters"
. (L'utilisateur peut modifier à la main en lettres minuscules.)Définir la
input type
àTYPE_CLASS_TEXT| TYPE_TEXT_FLAG_CAP_CHARACTERS
. Lekeyboard
doit honneur que.Vous pouvez utilisé les deux sens.
Première Façon:
Ensemble
android:inputType="textCapSentences"
sur votre EditText.Deuxième Façon:
Lorsque l'utilisateur d'entrer le numéro que vous avez utilisé le texte de l'observateur et de changer petit à lettre majuscule.
Vous pouvez ajouter la
android:textAllCaps="true"
propriété à votre fichier xml dans l'EditText. Cela permettra d'appliquer la softinput clavier à apparaître dans tous les chapeaux de mode. La valeur que vous saisissez apparaissent en Majuscules. Toutefois, cela ne garantit pas que l'utilisateur ne peut entrer dansUpperCase
lettres. S'ils le veulent, ils peuvent toujours revenir à la lettres minuscules. Si vous voulez vous assurer que la sortie de laEdittext
est Tout en majuscules, alors vous devez convertir manuellement la Chaîne d'entrée à l'aide detoUpperCase()
méthode deString
classe.android:textAllCaps="true"
n'est qu'une propriété de TextView (stackoverflow.com/a/28803492/5268730). Utilisationandroid:inputType="textCapCharacters"
à la place.Plutôt que de vous soucier de traiter avec le clavier, pourquoi ne pas accepter n'importe quelle entrée, en minuscules ou en majuscules et convertir la chaîne en majuscules?
Le code suivant devrait vous aider:
C'est convivial car il n'est pas nécessaire pour l'utilisateur de savoir que vous avez besoin de la chaîne en majuscules.
Espérons que cette aide.
Vous devriez mettre
android:inputType="textCapCharacters"
avec Edittext dans le fichier xml.Utiliser le filtre d'entrée
Encore mieux... un liner dans Kotlin...
Fait!
<your_edit_text>.filters = <your_edit_text>.filters + InputFilter.AllCaps()
<your_edit_text>.filters += InputFilter.AllCaps()
Viens de le faire:
Pour obtenir tous les capitaux, utilisez la commande suivante dans votre XML:
Dans kotlin, dans .kt fichier apporter des modifications:
Synthétique de la propriété pour un accès direct de widget avec l'id.
Et dans le fichier XML, pour votre travail d'édition de texte ajouter un couple de plus de drapeau:
Cela permettra de mettre à jour le clavier en majuscules est activé.
Pour obtenir capitalisés clavier lors d'un clic edittext utiliser ce code dans votre xml,
Basé sur le acceptées réponse, cette réponse est la même, mais dans Kotlin. Juste pour faciliter copypasting :·)
filters += InputFilter.AllCaps()
😀Je suis à l'aide de Visual Studio 2015/Xamarin pour construire mon application à la fois pour Android 5.1 et Android 6.0 (même apk installé sur les deux).
Quand j'ai précisé
android:inputType="textCapCharacters"
dans mon axml, le AllCaps clavier est apparu comme prévu sur Android 6.0, mais pas Android 5.1. J'ai ajoutéandroid:textAllCaps="true"
à mon axml et toujours pas de AllCaps clavier sur Android 5.1. J'ai mis un filtre à l'aide deEditText.SetFilters(new IInputFilter[] { new InputFilterAllCaps() });
et tandis que le clavier montre caractères minuscules sur Android 5.1, le champ de saisie est maintenant AllCaps.EDIT: Les différences de comportement que j'observe et que l'on supposait OS étaient en fait parce que j'ai eu différentes versions de Google Clavier sur les dispositifs de test. Une fois que j'ai mis à jour les appareils de la dernière Google Clavier (publié en juillet 2016 de cette écriture), " le Caps comportement est cohérent à travers les Systèmes d'exploitation. Maintenant, tous les périphériques affichent en caractères minuscules sur le clavier, mais l'entrée est Tout en majuscule parce que de
SetFilters(new IInputFilter[] { new InputFilterAllCaps() });
Xamarin équivalent de ErlVolton réponse:
Essayez d'utiliser un des code ci-dessous peut résoudre votre problème.
par programmation:
XML :
Simple kotlin réalisation
PS pour moi
filters
est toujours vide initialementJava 1-liner de la solution proposée pourrait être:
Remarque il doit
com.google.common.collect.Lists
.Pour moi, il a travaillé en ajoutant android:textAllCaps="true" et android:inputType="textCapCharacters"
Simplement, Ajouter le code ci-dessous à votre EditText de votre fichier xml.
Et si vous souhaitez permettre à la fois des majuscules et de chiffres puis utilisez code ci-dessous.