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 ?
Réponses
Trop de publicités?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);
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"
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
}
}
});
- Réponses précédentes
- Plus de réponses