Première lettre majuscule pour EditText

Je travaille sur une petite application de liste de tâches personnelle et jusqu’à présent, tout fonctionne très bien. Il y a un petit caprice que je voudrais comprendre. Chaque fois que je vais append un nouvel élément, j’ai un dialog avec une vue EditText qui s’affiche à l’intérieur. Lorsque je sélectionne la vue EditText, le clavier apparaît pour entrer du texte, comme il se doit. Dans la plupart des applications, la valeur par défaut semble être que la touche Majuscule est conservée pour la première lettre … bien qu’elle ne le fasse pas pour mon avis. Il doit y avoir un moyen simple de corriger, mais j’ai cherché la référence à plusieurs resockets et je ne peux pas la trouver. Je pense qu’il doit y avoir un atsortingbut xml pour la référence chargée par l’adaptateur, mais je ne peux pas savoir ce que c’est.

Statiquement (c’est-à-dire dans votre fichier XML de mise en page): définissez android:inputType="textCapSentences" sur votre EditText .

Par programme: vous devez inclure InputType.TYPE_CLASS_TEXT dans le InputType du EditText , par exemple

 EditText editor = new EditText(this); editor.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES); 

Peut être combiné avec du texte et ses variantes pour demander la capitalisation du premier caractère de chaque phrase.

– Google Docs

Utilisez simplement android:inputType="textCapWords" dans votre élément EditText.

Par exemple:

  

Reportez-vous au lien suivant pour référence: http://developer.android.com/reference/android/widget/TextView.html#attr_android%3ainputType

 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.

Appliquez la ligne suivante dans votre EditText en XML.

 android:inputType="textCapSentences|textMultiLine" 

Cela permettra également un support multi-ligne.

J’ai rencontré le même problème, simplement en partageant ce que j’ai découvert. Peut-être vous aider et aider les autres …

Essayez ceci sur votre layout. Accédez à la ligne ci-dessous dans votre EditText .

 android:inputType="textCapWords|textCapSentences" 

ça marche bien sur moi .. j’espère que ça marche aussi sur toi …

Définissez le type d’entrée en XML ainsi que dans un fichier JAVA comme celui-ci,

En XML,

android: inputType = “textMultiLine | textCapSentences”

Il permettra également les fichiers multilignes et JAVA,

 edittext.setRawInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_FLAG_CAP_SENTENCES); 

assurez-vous que le paramètre de mise en majuscules automatique de votre clavier est activé .

Je peux vous assurer que les deux réponses feront la première lettre en majuscule et ne rendront pas edittext simple ligne.

Si vous voulez le faire en XMl ci-dessous est le code

 android:inputType="textCapWords|textCapSentences" 

Si vous voulez le faire en activité / fragment etc ci-dessous est le code

 momentTextView.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS | InputType.TYPE_TEXT_FLAG_MULTI_LINE) 

PS: Si vous possédez une autre propriété, vous pouvez facilement l’append avec une pipe “|” symbole, assurez-vous simplement qu’il n’y a pas d’espace dans XML entre les propriétés de l’atsortingbut

Essayez ce code, il mettra en majuscule le premier caractère de tous les mots.

– définir addTextChangedListener pour la vue EditText

edt_text.addTextChangedListener (observateur);

– Ajouter TextWatcher

 TextWatcher watcher = 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 if (input.length() > 1 && input.contains(" ")) { Ssortingng fstr = input.subssortingng(0, input.lastIndexOf(" ") + 1); if (fstr.length() == input.length()) { capitalizedText = fstr; } else { Ssortingng sstr = input.subssortingng(input.lastIndexOf(" ") + 1); sstr = sstr.subssortingng(0, 1).toUpperCase() + sstr.subssortingng(1); capitalizedText = fstr + sstr; } } else capitalizedText = input.subssortingng(0, 1).toUpperCase() + input.subssortingng(1); if (!capitalizedText.equals(edt_text.getText().toSsortingng())) { edt_text.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) { edt_text.setSelection(mStart); edt_text.removeTextChangedListener(this); } }); edt_text.setText(capitalizedText); } } }; 

Auparavant, il était auparavant android:capitalize="words" , qui est maintenant obsolète. L’alternative recommandée est d’utiliser android:inputType="textCapWords"

Veuillez noter que cela ne fonctionnera que si les parameters de votre clavier sont activés automatiquement.

Pour ce faire par programmation, utilisez la méthode suivante:

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);

utiliser ce code uniquement pour la première lettre majuscule pour EditText

MainActivity.xml

     

MainActivity.java

 EditText et = findViewById(R.id.et); et.addTextChangedListener(new TextWatcher() { public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { } public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { if (et.getText().toSsortingng().length() == 1 && et.getTag().toSsortingng().equals("true")) { et.setTag("false"); et.setText(et.getText().toSsortingng().toUpperCase()); et.setSelection(et.getText().toSsortingng().length()); } if(et.getText().toSsortingng().length() == 0) { et.setTag("true"); } } public void afterTextChanged(Editable editable) { } }); 

Dans votre fichier XML de mise en page: définissez Android: inputType = “textCapSentences” sur votre EditText pour avoir le premier alphabet du premier mot de chaque phrase en majuscule Ou android: inputType = “textCapWords” sur votre EditText pour avoir le premier alphabet de chaque mot en majuscule