In meiner App "Tide Now WA", die ich kürzlich mit dem neuen Nexus 9-Tablet (Lollipop - API 21) auf Kompatibilität getestet habe.
Es schreibt einen Schaltflächentext. Diese App schreibt den Text korrekt mit Android 2.3 und Android 4.0. Dh gemischte Groß- und Kleinbuchstaben.
Wenn dieselbe App auf meinem Nexus 9 ausgeführt wird, werden alle Buchstaben im Text großgeschrieben.
FWIW mein Manifest enthält die folgende Aussage:
uses-sdk android:minSdkVersion="10" android:targetSdkVersion="14"
Kann ich das in meinem Code beheben oder ist es ein Fehler im Betriebssystem, danke
android
android-5.0-lollipop
android-button
android-styles
user1644002
quelle
quelle
Antworten:
Ich habe keine Ahnung, warum es passiert, aber es gibt 3 triviale Versuche:
Verwenden Sie
android:textAllCaps="false"
in Ihremlayout-v21
Ändern Sie programmgesteuert die Transformationsmethode der Schaltfläche.
mButton.setTransformationMethod(null);
Überprüfen Sie Ihren Stil für Allcaps
Hinweis :
public void setAllCaps(boolean allCaps)
,android:textAllCaps
sind verfügbar von API - Version 14.quelle
<item name="android:textAllCaps">false</item>
in meiner StildefinitionFolgendes habe ich in meiner Datei values / theme.xml getan
quelle
<item name="textAllCaps">false</item>
.buttonStyle
zuandroid:buttonStyle
android:textAllCaps="false"
(ichDies kann im Anwendungscode behoben werden, indem die Transformationsmethode der Schaltfläche festgelegt wird, z
quelle
Setze android: textAllCaps = "false". Wenn Sie einen Appcompat-Stil verwenden, stellen Sie sicher, dass textAllCaps vor dem Stil steht. Andernfalls wird es vom Stil überschrieben. Zum Beispiel:
quelle
Fügen Sie diese Zeile mit Stil hinzu
quelle
Dieser funktioniert ... nur in Ihrem Code in Ihrem unteren Code fügen Sie diesen hinzu:
Es sollte den Großbuchstaben deaktivieren, den U versucht, klein einzugeben.
quelle
Die Lollipop-Standardeinstellung enthält "textAllCaps true", sodass Sie sie manuell auf "false" setzen müssen
quelle
Fügen Sie android: textAllCaps = "false" in
<Button>
Tag, das es ist.quelle
Es gibt eine einfachere Möglichkeit, die für alle Schaltflächen funktioniert. Ändern Sie einfach das Erscheinungsbild der Schaltflächen in Ihrem Thema. Versuchen Sie Folgendes:
in values-21 / styles.xml
PS: Es wird empfohlen, die Prinzipien des Materialdesigns zu befolgen. Sie sollten großgeschriebenen Text in den Schaltflächen unter http://www.google.com/design/spec/components/buttons.html anzeigen
quelle
Wenn Sie den android.support.v7.widget.AppCompatButton im XML-Layout verwenden, können Sie vermeiden, dass Sie ein Layout-21 benötigen oder programmgesteuert etwas ändern müssen. Dies funktioniert natürlich auch mit der AppCompat v7-Bibliothek.
Hoffe das hilft.
quelle
Verwenden Sie diese Zeile android: textAllCaps = "false" in Ihrer XML
quelle
In der Android Studio-IDE müssen Sie auf das Filtersymbol klicken, um die Experteneigenschaften anzuzeigen. Dann sehen Sie die
textAllCaps
Immobilie. Aktivieren Sie es und deaktivieren Sie es.quelle
Sie können
android:textAllCaps="false"
der Schaltfläche hinzufügen .Der Schaltflächentext wird möglicherweise durch das Thema Ihrer App, das für alle Schaltflächen gilt, in Großbuchstaben umgewandelt. Überprüfen Sie die Themen- / Stildateien, um das Attribut festzulegen
android:textAllCaps
.quelle
Java:
Kotlin:
XML:
Stile:
Im Layout:
quelle
Wenn Sie hier angekommen sind, weil Ihr Facebook-Schaltflächentext in Großbuchstaben angezeigt wird, fügen
android:textAllCaps="false"
Sie ihn einfach in Ihre XML-Datei ein. Es hat bei mir funktioniert.quelle
OK, bin gerade darauf gestoßen. Die Schaltflächen in Lollipop werden in Großbuchstaben angezeigt UND die Schriftart wird auf "Normal" zurückgesetzt. Aber in meinem Fall (Android 5.02) funktionierte es in einem Layout korrekt, aber nicht in einem anderen!?
Das Ändern von APIs hat nicht funktioniert.
Für die Einstellung auf alle Großbuchstaben ist min API 14 erforderlich, und die Schriftart wird weiterhin auf "normal" zurückgesetzt.
Dies liegt daran, dass die Android-Materialstile eine Änderung der Stile erzwingen, wenn keiner definiert ist (deshalb hat es in einem meiner Layouts funktioniert und nicht in dem anderen, weil ich einen Stil definiert habe).
Die einfache Lösung besteht also darin, im Manifest für jede Aktivität einen Stil zu definieren, der in meinem Fall nur:
android: theme = "@ android: style / Theme.NoTitleBar.Fullscreen" war
( ich hoffe, dies hilft jemandem, hätte mir ein paar gerettet Stunden letzte Nacht)
quelle
Wenn Sie verwenden
appcompat-v7
, können Sie die UnterklasseAppCompatButton
undsetSupportAllCaps(false)
dann diese Klasse für alle Ihre Schaltflächen verwenden.Siehe AppCompatButton # setSupportAllCaps (boolean) Android-Dokumente.
quelle
Standardmäßig bietet Button in Android das Schlüsselwort all caps. Wenn Sie möchten, dass der Schaltflächentext in Klein- oder Großbuchstaben geschrieben wird, können Sie das
textAllCaps
Flag mit deaktivierenandroid:textAllCaps="false"
quelle
Ich weiß nicht, warum die Antwort von @ user1010160 mit 0 bewertet wurde. Ich hätte sie mit +1 bewertet, wenn ich genug Ruf gehabt hätte.
Da meine App für eine API unter 14 ausgelegt ist und ich meinem Programm keinen Code hinzufügen wollte, fand ich keine Lösung, bis ich seine Antwort gelesen hatte. Was er sagte war, dass, obwohl Sie getan haben, was in den Anwendungsstilen benötigt wird, es nicht funktionieren wird, es sei denn, Sie fügen Ihrer Aktivität einen Stil hinzu und setzen dort textAllCaps auf false.
Es reicht nicht aus, einen Stil für die Aktivität zu haben (meine Aktivität hatte einen Stil), da der Stil möglicherweise standardmäßig die AllCaps-Eigenschaft verwendet. Sie müssen diese Eigenschaft auch in der Aktivität explizit auf false setzen.
Ich habe es jetzt sowohl in der Anwendung als auch in den Aktivitätsteilen der Manifestdatei.
quelle
Eine weitere programmatische Kotlin-Alternative:
mButton.transformationMethod = null
quelle