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 (rempli à partir d'un appel de base de données à des données entrées par l'utilisateur (qui peuvent ne pas être en majuscule)), comment puis-je m'assurer qu'elles sont en majuscule?
Merci!
Je devrais pouvoir accomplir cela par le biais de la manipulation de chaînes Java standard, sans aucune spécificité Android ou TextView.
Quelque chose comme:
String upperString = myString.substring(0,1).toUpperCase() + myString.substring(1);
Bien qu'il y ait probablement un million de façons d'accomplir cela. Voir String documentation.
Android:inputType="textCapSentences"
ou
TV.sname.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
Cela 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()));
StringBuilder sb = new StringBuilder(name);
sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));
return sb.toString();
Vous pouvez ajouter Apache Commons Lang Dans Gradle comme compile 'org.Apache.commons:commons-lang3:3.4'
Et utilisez WordUtils.capitalizeFully(name)
pour Kotlin, il suffit d'appeler
textview.text = string.capitalize()
Pour les futurs visiteurs, vous pouvez également (meilleur IMHO) importer WordUtil
à partir de Apache
et ajouter de nombreuses méthodes utiles à votre application, telles que capitalize
, comme indiqué ici:
Comment capitaliser le premier caractère de chaque mot d'une chaîne
Pour moi rien de travail:
Une fonction:
private String getCapsSentences(String tagName) {
String[] splits = tagName.toLowerCase().split(" ");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < splits.length; i++) {
String eachWord = splits[i];
if (i > 0 && eachWord.length() > 0) {
sb.append(" ");
}
String cap = eachWord.substring(0, 1).toUpperCase()
+ eachWord.substring(1);
sb.append(cap);
}
return sb.toString();
}
Résultat:
I/P brain
O/P Cerveau
I/P Brain and Health
O/P Brain And Health
I/P brain And health
à O/P Brain And Health
I/P brain's Health
à O/P Brain's Health
I/P brain's Health and leg
à O/P Brain's Health And Leg
J'espère que cela vous aiderait.
Veuillez créer un TextView personnalisé et l'utiliser:
public class CustomTextView extends TextView {
public CapitalizedTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void setText(CharSequence text, BufferType type) {
if (text.length() > 0) {
text = String.valueOf(text.charAt(0)).toUpperCase() + text.subSequence(1, text.length());
}
super.setText(text, type);
}
}