J’ai un EditText
et j’ai besoin que le texte (lorsque l’utilisateur tape dans) soit démarré avec une majuscule.
Attention si vous ajoutez à la fois android:capitalize="sentences"
et android:inputType="text"
, car ce dernier semble avoir la priorité sur le premier et l’entrée ne sera pas en majuscule.
Il existe un inputType
spécifique pour mettre automatiquement en majuscule la première lettre:
android:inputType="textCapSentences"
Voir http://developer.android.com/reference/android/widget/TextView.html#attr_android:inputType
Les options pour Android: capitaliser sont
android:capitalize="none", which won't automatically capitalize anything. android:capitalize="sentences", Which will capitalize the first word of each sentence. android:capitalize="words", Which Will Capitalize The First Letter Of Every Word. android:capitalize="characters", WHICH WILL CAPITALIZE EVERY CHARACTER.
Utilisation
android:inputType="textPersonName|textCapWords"
comme utiliser uniquement "textPersonName"
n’est pas suffisant, les premières lettres du nom seraient en majuscules.
De même avec les adresses postales:
android:inputType="textPostalAddress|textCapSentences"
Ajoutez ceci dans votre XML
android:inputType="textCapWords"
android:inputType="textCapSentences"
fonctionnera pour les phrases. Cependant, je devais capitaliser chaque mot dans un champ de nom complet.
Essayez de cette façon,
testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);
ou android:inputType="textCapSentences"
ne fonctionnera que si le clavier de votre appareil est activé avec la fonction de mise en majuscules automatique .
Dans le layout XML, ajoutez android:inputType=textCapSentences
Dans le layout XML, ajoutez android:capitalize="sentences"
Vous avez utilisé le mot “Enforce”. Alors, essayez ceci. Passez simplement votre edittext en argument.
public static void setCapitalizeTextWatcher(final EditText editText) { final TextWatcher textWatcher = new TextWatcher() { int mStart = 0; @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { mStart = start + count; } @Override public void afterTextChanged(Editable s) { Ssortingng input = s.toSsortingng(); Ssortingng capitalizedText; if (input.length() < 1) capitalizedText = input; else capitalizedText = input.substring(0, 1).toUpperCase() + input.substring(1); if (!capitalizedText.equals(editText.getText().toString())) { editText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { editText.setSelection(mStart); editText.removeTextChangedListener(this); } }); editText.setText(capitalizedText); } } }; editText.addTextChangedListener(textWatcher); }
Collez ceci dans votre edittext (xml):
android:capitalize="sentences"
edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});