web-dev-qa-db-fra.com

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 (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!

59
Allen Gingrich

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.

133
Cheryl Simon
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()));
56
Beto Caldas
StringBuilder sb = new StringBuilder(name);
sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));  
return sb.toString();
17
noloman

Vous pouvez ajouter Apache Commons Lang Dans Gradle comme compile 'org.Apache.commons:commons-lang3:3.4'

Et utilisez WordUtils.capitalizeFully(name)

6
Prakash

pour Kotlin, il suffit d'appeler

textview.text = string.capitalize()
4
Ben Kax

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

2
Androiderson

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.

1
Hiren Patel

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);
    }
}
1
Shrini Jaiswal