Impossible de mettre le texte du bouton en minuscules dans Android Studio


184

J'ai une question triviale qui me tracasse depuis un certain temps. J'ai essayé de google mais personne ne semble avoir le même problème que moi ou ne le voit pas comme un problème. Quand je crée un bouton dans activity_my.xml sous layout

 <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_1_name"
    android:id="@+id/button2"
    android:layout_marginTop="140dp"
    android:layout_below="@+id/textView"
    android:layout_centerHorizontal="true" />

J'ai un bouton qui ressemble à ceci] [Imgur

même si mon code de chaînes est:

<resources>

<string name="app_name">HelloWorld</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<string name="button_1_name">BuTtOn 1</string>

Je sais qu'il me manque définitivement quelque chose de petit ici, mais comment faire fonctionner les minuscules / majuscules dans le texte du bouton?

Merci!


Vérifiez votre dossier de valeurs différentes pour la chaîne button_1_name.
Zeeshan Khan

@lpbug un an plus tard. toujours confronté au même problème et j'ai atterri ici et j'ai eu la solution
Edijae Crusar

Réponses:


466

Vous pouvez ajouter android:textAllCaps="false"au bouton.

Le texte du bouton peut être transformé en majuscules par le thème de votre application qui s'applique à tous les boutons. Vérifiez les fichiers de thèmes / styles pour définir l'attribut android:textAllCaps.


1
Merci pour la réponse! android:textAllCaps="false"a fonctionné comme une solution de contournement, mais les nouveaux boutons qui sont ajoutés sont toujours en majuscules. Mon styles.xml sous res / values ​​ne semble pas avoir l'attribut susmentionné. Voici ce qu'il avait<resources> <!-- Base application theme. --> <style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar"> <!-- Customize your theme here. --> </style> </resources>
Alex H

15
Vous héritez du thème Theme.Holo.Light.DarkActionBarqui contient ce paramètre. Vous devez ajouter une nouvelle propriété explicite pour les boutons de style, par exemple<style name="Widget.Button" parent="Widget.Button"><item name="android:textAllCaps">false</item></style>
Stelian Matei

1
Après avoir ajouté cela, j'ai une erreur d'inflation avec arrayindexoutofboundsexception.
M. Usman Khan

@usman Je doute que l'exception soit liée à la textAllCapspropriété. Pouvez-vous fournir plus de détails?
Stelian Matei

1
Cela ne fonctionnera pas si vous utilisez votre propre classe personnalisée étendant la classe Button.
Euh. Joshi

28
<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:buttonStyle">@style/Button</item>
</style>

<style name="Button" parent="Widget.AppCompat.Button">
    <item name="android:textAllCaps">false</item>
</style>

Simple et efficace.
Valandres

8

Cela peut être corrigé dans le code de l'application en définissant la méthode TransformationMethod du bouton à null, par exemple

mButton.setTransformationMethod(null);


4

il y a 3 façons de le faire.

1.Ajoutez la ligne suivante sur style.xml pour changer toute l'application

<item name="android:textAllCaps">false</item>

2. utiliser

android:textAllCaps="false"

dans votre layout-v21

mButton.setTransformationMethod(null);
  1. ajouter cette ligne sous l'élément (bouton ou modifier le texte) en xml

android: textAllCaps = "false"

Cordialement


3

Dans votre fichier .xml dans Button, ajoutez cette ligne -

android:textAllCaps="false"

Quelle est la différence entre votre réponse et la réponse de Stelian Matei ? Veuillez ne pas répéter la réponse acceptée.
Filipe Brito

1

Vous pourriez définir comme ça

button.setAllCaps(false);

par programmation


1

J'ai rencontré ce problème dans TextView. j'ai essayé

android:textAllCaps="false", 
mbutton.setAllCaps(false);   
<item name="android:textAllCaps">false</item> 

rien de tout cela n'a fonctionné pour moi. Enfin j'en ai marre et j'ai du texte codé en dur, ça marche.

tv.setText("Mytext");

tv est l'objet de TextView. Mais selon les normes de codage, c'est une mauvaise pratique.



0

dans le code XML,
ajoutez cette ligne android:textAllCaps="false" comme le code ci-dessous

 <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_1_name"
        android:id="@+id/button2"
        android:layout_marginTop="140dp"
        android:layout_below="@+id/textView"
        android:layout_centerHorizontal="true"
       ** android:textAllCaps="false" ** />

ou

dans le code Java (par programme ),
ajoutez cette ligne à votre boutonsetAllCaps(false)

Button btn = (Button) findViewById(R.id.button2);
btn.setAllCaps(false);

0

Il y a une propriété dans <Button>qui est android: textAllCaps = "false" qui crée les caractères dans lesquels vous voulez dans vos propres petites et majuscules. Par défaut, il est devenu True, alors écrivez ce code et faites textAllCaps = false, vous pouvez alors écrire du texte sur le bouton en lettres minuscules et majuscules selon vos besoins. Code complet pour un bouton qui permet d'écrire des lettres selon nos exigences.

 <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/btnLogin"
            android:text="Login for Chat"
            android:textAllCaps="false"/>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.