web-dev-qa-db-fra.com

Comment changer la première lettre de chaque mot en majuscule dans Textview xml

je dois changer le text = "font roboto regular" en Font Roboto Regular en xml lui-même, comment faire? 

<TextView
   Android:layout_width="match_parent"
   Android:layout_height="wrap_content"
   Android:gravity="center"
   Android:textSize="18sp"
   Android:textColor="@Android:color/black"
   Android:fontFamily="roboto-regular"
   Android:text="font roboto regular"
   Android:inputType="textCapWords"
   Android:capitalize="words"/>
18
sree

Vous pouvez utiliser ce code.

String str = "font roboto regular";
String[] strArray = str.split(" ");
StringBuilder builder = new StringBuilder();
for (String s : strArray) {
     String cap = s.substring(0, 1).toUpperCase() + s.substring(1);
     builder.append(cap + " ");
}
TextView textView = (TextView) findViewById(R.id.textView);
textView.setText(builder.toString());
36
Chintan Bawa

Si quelqu'un cherche une façon kotlin de le faire, le code devient très simple et beau.

yourTextView.text = yourText.split(' ').joinToString(" ") { it.capitalize() }
11
Praveena

Essaye ça...

Méthode qui convertit la première lettre de chaque mot d'une chaîne en une lettre majuscule .

 private String capitalize(String capString){
    StringBuffer capBuffer = new StringBuffer();
    Matcher capMatcher = Pattern.compile("([a-z])([a-z]*)", Pattern.CASE_INSENSITIVE).matcher(capString);
    while (capMatcher.find()){
        capMatcher.appendReplacement(capBuffer, capMatcher.group(1).toUpperCase() + capMatcher.group(2).toLowerCase());
    }

    return capMatcher.appendTail(capBuffer).toString();
}

Usage:

String chars = capitalize("hello dream world");
//textView.setText(chars);
System.out.println("Output: "+chars);

Résultat:

Output: Hello Dream World
7

Vous pouvez utiliser

Android:inputType="textCapSentences"
Android:capitalize="sentences"

Si votre texte est dynamique, alors

KOTLIN

   val strArrayOBJ = "Your String".split(" ".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
                val builder = StringBuilder()
                for (s in strArrayOBJ) {
                    val cap = s.substring(0, 1).toUpperCase() + s.substring(1)
                    builder.append("$cap ")
                }
txt_OBJ.text=builder.toString()
6
IntelliJ Amiya

Modification de la réponse acceptée pour nettoyer les lettres majuscules existantes et empêcher l'espace de fin laissé par la réponse acceptée.

public static String capitalize(@NonNull String input) {

    String[] words = input.toLowerCase().split(" ");
    StringBuilder builder = new StringBuilder();
    for (int i = 0; i < words.length; i++) {
        String Word = words[i];

        if (i > 0 && Word.length() > 0) {
            builder.append(" ");
        }

        String cap = Word.substring(0, 1).toUpperCase() + Word.substring(1);
        builder.append(cap);
    }
    return builder.toString();
}
4
Ankhwatcher

vous pouvez utiliser cette méthode pour le faire par programme

public String wordFirstCap(String str)
{
    String[] words = str.trim().split(" ");
    StringBuilder ret = new StringBuilder();
    for(int i = 0; i < words.length; i++)
    {
        if(words[i].trim().length() > 0)
        {
            Log.e("words[i].trim",""+words[i].trim().charAt(0));
            ret.append(Character.toUpperCase(words[i].trim().charAt(0)));
            ret.append(words[i].trim().substring(1));
            if(i < words.length - 1) {
                ret.append(' ');
            }
        }
    }

    return ret.toString();
}

se référer this si vous voulez le faire en xml.

3
Ravi Rupareliya

majuscule première lettre

Android:inputType="textCapWords"

capitalise le premier mot de la phrase:

Android:inputType="textCapSentences"
1
Ali Nawaz

https://stackoverflow.com/a/1149869/2725203

Jetez un coup d'œil à ACL WordUtils.

WordUtils.capitalize ("votre chaîne") == "Votre chaîne"

1
saman shoja
Android:inputType="textCapWords"

Cela ne fonctionnera pas dans TextView, qui est valide pour EditText uniquement. il faut donc le faire manuellement.

Vous pouvez utiliser capitalizeFully pour que chaque mot commence par un capital.

1
Gunaseelan

Android:capitalize est obsolète.

Suivez ces étapes:https://stackoverflow.com/a/31699306/4409113

  1. Appuyez sur l’icône de ‘Paramètres’ sur l’écran d’accueil de votre Lollipop Android Dispositif
  2. À l’écran ‘Settings’, faites défiler jusqu’à la section PERSONAL et appuyez sur la section «Langue et saisie».
  3. Dans la section "Langue et saisie", sélectionnez votre clavier (qui est marqué comme étant le clavier actuel).
  4. Maintenant, appuyez sur les "Préférences".
  5. Appuyez pour cocher la case 'Auto-capitalisation' pour l'activer.

Et puis ça devrait marcher.

Si ce n'était pas le cas, je préférerais le faire dans Java.

1
ʍѳђઽ૯ท

Pour mettre chaque mot en majuscule dans une phrase, utilisez l'attribut ci-dessous en xml de ce textView particulier.

Android: inputType = "textCapWords"

0
Er Prajesh

Vous pouvez utiliser 

private String capitalize(final String line) {
   return Character.toUpperCase(line.charAt(0)) + line.substring(1);
}

refer this Comment capitaliser le premier caractère de chaque mot d'une chaîne

0
Anjali Tripathi

Une autre approche consiste à utiliser la classe StringTokenizer. La méthode ci-dessous fonctionne pour un nombre quelconque de mots dans une phrase ou dans la vue EditText. J'ai utilisé cela pour capitaliser le champ de noms complets dans une application.

public String capWordFirstLetter(String fullname)
{
    String fname = "";
    String s2;
    StringTokenizer tokenizer = new StringTokenizer(fullname);
    while (tokenizer.hasMoreTokens())
    {
        s2 = tokenizer.nextToken().toLowerCase();
        if (fname.length() == 0)
            fname += s2.substring(0, 1).toUpperCase() + s2.substring(1);
        else
            fname += " "+s2.substring(0, 1).toUpperCase() + s2.substring(1);
    }

    return fname;
}
0
Cletus Ajibade