114 votes

Comment mettre en majuscule la première lettre d'un texte dans un TextView dans une application Android ?

Je ne fais pas non plus référence à textInput. Je veux dire qu'une fois que vous avez du texte statique dans un TextView (alimenté à partir d'un appel de base de données vers des données saisies par l'utilisateur (qui peuvent ne pas être capitalisées)), comment puis-je m'assurer qu'elles sont capitalisées ?

Merci !

4 votes

Pour les futurs visiteurs... En Kotlin, utilisez simplement "abcd".capitalize())

0 votes

capitalize est déprécié, j'ai ajouté le pourquoi et la solution de contournement comme réponse. stackoverflow.com/a/67482851/80428

215voto

Cheryl Simon Points 25259

Je devrais être en mesure d'accomplir cela par la manipulation standard des chaînes de caractères en Java, rien de spécifique à Android ou aux TextView.

Quelque chose comme :

String upperString = myString.substring(0, 1).toUpperCase() + myString.substring(1).toLowerCase();

Bien qu'il y ait probablement un million de façons d'y parvenir. Voir Chaîne de caractères documentation.

EDITED J'ai ajouté le .toLowerCase()

16 votes

Je voulais juste noter que c'est une bonne solution pour l'anglais, mais pas pour la localisation.

84voto

Beto Caldas Points 803

Ce qui suit ne s'applique pas à TextView, mais fonctionne avec EditText ; même dans ce cas, il s'applique au texte saisi au clavier, et non au texte chargé avec setText(). Pour être plus précis, il active les majuscules du clavier, et l'utilisateur peut passer outre à sa volonté.

android:inputType="textCapSentences"

ou

TV.sname.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);

Cela permettra de CAP la première lettre.

ou

compile 'org.apache.commons:commons-lang3:3.4' //in build.gradle module(app)

tv.setText(StringUtils.capitalize(myString.toLowerCase().trim()));

82 votes

Cela ne s'applique pas au TextView, mais seulement à l'EditText ; même dans ce cas, cela s'applique au texte saisi au clavier, et non au texte chargé avec setText(). Pour être plus précis, cela active les majuscules du clavier, et l'utilisateur peut passer outre à sa volonté.

34voto

Ben Kax Points 96

Pour Kotlin, il suffit d'appeler

textview.text = string.capitalize()

3 votes

J'aurais pensé que le système mettrait chaque mot en majuscule, mais il ne fonctionne effectivement que pour le premier mot.

1 votes

Si vous l'utilisez dans une application multilingue, le fait de passer la locale améliore la situation.

1 votes

Capitalize a été déprécié à partir de la 1.5, j'ai ajouté ma réponse à l'alternative ici. stackoverflow.com/a/67482851/80428

33voto

noloman Points 2263
StringBuilder sb = new StringBuilder(name);
sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));  
return sb.toString();

10voto

Prakash Points 579

Vous pouvez ajouter Langage Apache Commons dans Gradle comme compile 'org.apache.commons:commons-lang3:3.4'

Et utiliser WordUtils.capitalizeFully(name)

1 votes

Info : lang3 WordUtils est déprécié, vous devez utiliser "org.apache.commons.text.WordUtils" à la place : commons.apache.org/proper/commons-text/javadocs/api-release/org/

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