173 votes

Dans Android EditText, comment forcer l'écriture en majuscules ?

Dans mon application Android, j'ai différents EditText où l'utilisateur peut saisir des informations. Mais j'ai besoin de forcer l'utilisateur à écrire en lettres majuscules. Connaissez-vous une fonction pour faire cela ?

379voto

ErlVolton Points 95

Android a en fait un InputFilter intégré juste pour cela !

edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});

Faites attention, setFilters réinitialisera tous les autres attributs qui ont été définis via XML (c'est-à-dire maxLines , inputType , imeOptinos ...). Pour éviter cela, ajoutez votre ou vos filtres à ceux qui existent déjà.

InputFilter[] editFilters = <EditText>.getFilters();
InputFilter[] newFilters = new InputFilter[editFilters.length + 1];
System.arraycopy(editFilters, 0, newFilters, 0, editFilters.length);
newFilters[editFilters.length] = <YOUR_FILTER>;  
<EditText>.setFilters(newFilters);

130voto

Aoyama Nanami Points 2452

Si vous voulez pour forcer l'utilisateur à écrire dans lettres majuscules par défaut dans votre EditText, il vous suffit d'ajouter android:inputType="textCapCharacters" . (L'utilisateur peut toujours passer manuellement en minuscules).

26voto

Gabe Sechan Points 23732

Il n'est pas possible de forcer un capslock uniquement via le XML. Les bibliothèques tierces ne sont pas non plus d'un grand secours. Vous pouvez faire un toUpper() sur le texte du côté récepteur, mais il n'y a aucun moyen de l'empêcher du côté du clavier.

Vous pouvez utiliser XML pour régler le clavier sur le verrouillage des majuscules.

Java

Vous pouvez régler le input_type à TYPE_CLASS_TEXT| TYPE_TEXT_FLAG_CAP_CHARACTERS . Le site keyboard devrait honorer cela.

Kotlin

android:inputType="textCapCharacters"

23voto

Harshid Points 2354

Vous pouvez utiliser deux voies.

First Way :

Set android:inputType="textCapSentences" sur votre EditText.

Deuxième voie :

Lorsque l'utilisateur saisit le numéro, vous devez utiliser l'observateur de texte et changer la petite lettre en majuscule.

edittext.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {            

    }
        @Override
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                    int arg3) {             
    }
    @Override
    public void afterTextChanged(Editable et) {
          String s=et.toString();
      if(!s.equals(s.toUpperCase()))
      {
         s=s.toUpperCase();
         edittext.setText(s);
         edittext.setSelection(edittext.length()); //fix reverse texting
      }
    }
});

15voto

Sreejesh K Nair Points 367

Utiliser le filtre d'entrée

editText = (EditText) findViewById(R.id.enteredText);
editText.setFilters(new InputFilter[]{new InputFilter.AllCaps()});

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