Dans mon application "Tide Now WA" dont j'ai récemment testé la compatibilité avec la nouvelle tablette Nexus 9 (Lollipop - API 21).
Il écrit du texte de bouton. Cette application écrit le texte correctement en utilisant Android 2.3 et Android 4.0. C'est à dire des lettres majuscules et minuscules mixtes.
Lorsque la même application est exécutée sur mon Nexus 9, toutes les lettres du texte sont en majuscules.
Mon manifeste FWIW contient la déclaration suivante:
uses-sdk android:minSdkVersion="10" android:targetSdkVersion="14"
Puis-je résoudre ce problème dans mon code ou est-ce un bug dans le système d'exploitation merci
android
android-5.0-lollipop
android-button
android-styles
user1644002
la source
la source
Réponses:
Je ne sais pas pourquoi cela se produit mais il y a 3 tentatives triviales à faire:
Utilisez
android:textAllCaps="false"
dans votrelayout-v21
Modifiez par programme la méthode de transformation du bouton.
mButton.setTransformationMethod(null);
Vérifiez votre style pour Allcaps
Remarque :
public void setAllCaps(boolean allCaps)
,android:textAllCaps
sont disponibles à partir de la version de l' API 14.la source
<item name="android:textAllCaps">false</item>
dans ma définition de styleVoici ce que j'ai fait dans mes valeurs / themes.xml
la source
<item name="textAllCaps">false</item>
.buttonStyle
pourandroid:buttonStyle
android:textAllCaps="false"
(j'utilise Android Studio 3.0)Ceci peut être corrigé dans le code de l'application en définissant la méthode de transformation du bouton, par exemple
la source
Définissez android: textAllCaps = "false". Si vous utilisez un style compatible avec les applications, assurez-vous que textAllCaps précède le style. Sinon, le style le remplacera. Par exemple:
la source
ajoutez cette ligne avec style
la source
celui-ci fonctionne .... juste dans votre code dans votre code inférieur ajoutez celui-ci:
cela devrait désactiver la lettre majuscule que U essaye de taper petit.
la source
La valeur par défaut de Lollipop est fournie avec "textAllCaps true", vous devez donc manuellement la rendre fausse
la source
Ajoutez android: textAllCaps = "false" dans la
<Button>
balise c'est tout.la source
Il existe un moyen plus simple qui fonctionne pour tous les boutons, changez simplement l'apparence des boutons dans votre thème, essayez ceci:
dans values-21 / styles.xml
PS: il est recommandé de suivre les principes de la conception matérielle, vous devez afficher le texte en majuscule dans les boutons, http://www.google.com/design/spec/components/buttons.html
la source
L'utilisation de android.support.v7.widget.AppCompatButton dans la disposition XML vous permettra d'éviter d'avoir à avoir une disposition-21 ou de changer quoi que ce soit par programme. Naturellement, cela fonctionnera également avec la bibliothèque AppCompat v7.
J'espère que cela t'aides.
la source
Utilisez cette ligne android: textAllCaps = "false" dans votre xml
la source
Dans Android Studio IDE, vous devez cliquer sur l'icône Filtre pour afficher les propriétés expertes. Ensuite, vous verrez la
textAllCaps
propriété. Vérifiez-le, puis décochez-le.la source
Vous pourriez ajouter
android:textAllCaps="false"
au bouton.Le texte du bouton peut être transformé en majuscule 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
.la source
Java:
Kotlin:
XML:
Modes:
Dans la mise en page:
la source
Si vous êtes arrivé ici parce que le texte de votre bouton facebook apparaît dans toutes les majuscules, ajoutez-le simplement
android:textAllCaps="false"
dans votre fichier xml. Ça a marché pour moi.la source
OK, je suis juste tombé sur ça. Les boutons de Lollipop sont tous en majuscules ET la police est réinitialisée à «normal». Mais dans mon cas (Android 5.02), cela fonctionnait correctement dans une disposition, mais pas dans une autre!?
La modification des API n'a pas fonctionné.
La définition de toutes les majuscules nécessite min API 14 et la police est toujours réinitialisée à «normal».
C'est parce que les styles de matériaux Android obligent à modifier les styles s'il n'y en a pas un défini (c'est pourquoi cela a fonctionné dans l'une de mes dispositions et pas dans l'autre parce que j'ai défini un style).
Donc, la solution facile consiste à définir un style dans le manifeste pour chaque activité qui, dans mon cas, était simplement:
android: theme = "@ android: style / Theme.NoTitleBar.Fullscreen"
(j'espère que cela aide quelqu'un, cela m'aurait sauvé un couple d'heures hier soir)
la source
Si vous utilisez
appcompat-v7
, vous pouvez sous -classerAppCompatButton
etsetSupportAllCaps(false)
ensuite utiliser cette classe pour tous vos boutons.Voir AppCompatButton # setSupportAllCaps (booléen) documents Android.
la source
Par défaut, Button dans Android fournit tous les mots clés en majuscules. Si vous souhaitez que le texte du bouton soit en minuscules ou en majuscules, vous pouvez désactiver l'
textAllCaps
indicateur à l'aide deandroid:textAllCaps="false"
la source
Je ne sais pas pourquoi la réponse de @ user1010160 a obtenu une note de 0. Je l'aurais donné +1 si j'avais suffisamment de réputation.
Étant donné que mon application est conçue pour une API inférieure à 14 et que je ne voulais pas ajouter de code à mon programme, je n'ai trouvé aucune solution avant d'avoir lu sa réponse. Ce qu'il a dit, c'est que même si vous avez fait ce qui est nécessaire dans les styles d'application, cela ne fonctionnera que si vous ajoutez un style à votre activité et que vous définissez textAllCaps sur false.
Il ne suffit pas d'avoir un style pour l'activité (mon activité avait un style), car le style peut par défaut être la propriété AllCaps. Vous devez définir explicitement, dans l'activité également, cette propriété sur false.
Je l'ai maintenant à la fois dans l'application et dans les parties d'activité du fichier manifeste.
la source
Une autre alternative programmatique de Kotlin:
mButton.transformationMethod = null
la source