W mojej aplikacji „Tide Now WA”, którą ostatnio przetestowałem pod kątem zgodności z nowym tabletem Nexus 9 (Lollipop - API 21).
Zapisuje tekst przycisku. Ta aplikacja poprawnie zapisuje tekst w systemie Android 2.3 i Android 4.0. Tj. Mieszane wielkie i małe litery.
Gdy ta sama aplikacja jest uruchomiona na moim Nexusie 9, wszystkie litery w tekście są pisane wielkimi literami.
FWIW mój manifest zawiera następujące oświadczenie:
uses-sdk android:minSdkVersion="10" android:targetSdkVersion="14"
Czy mogę to naprawić w kodzie, czy jest to błąd w systemie operacyjnym dzięki
android
android-5.0-lollipop
android-button
android-styles
użytkownik1644002
źródło
źródło
Odpowiedzi:
Nie mam pojęcia, dlaczego tak się dzieje, ale są 3 trywialne próby:
Użyj
android:textAllCaps="false"
w swoimlayout-v21
Programowo zmień metodę transformacji przycisku.
mButton.setTransformationMethod(null);
Sprawdź swój styl pod kątem Allcaps
Uwaga :
public void setAllCaps(boolean allCaps)
,android:textAllCaps
są dostępne z interfejsu API w wersji 14.źródło
<item name="android:textAllCaps">false</item>
w mojej definicji styluOto, co zrobiłem w mojej wartości / themes.xml
źródło
<item name="textAllCaps">false</item>
.buttonStyle
naandroid:buttonStyle
android:textAllCaps="false"
(używam Androida studio 3.0)Można to naprawić w kodzie aplikacji, ustawiając metodę transformacji przycisku, np
źródło
Ustaw Androida: textAllCaps = „false”. Jeśli używasz stylu appcompat, upewnij się, że textAllCaps znajduje się przed stylem. W przeciwnym razie styl zastąpi go. Na przykład:
źródło
dodaj tę linię w dobrym stylu
źródło
ten działa .... po prostu w kodzie w dolnym kodzie dodaj ten:
powinien dezaktywować wielką literę, którą próbujesz wpisać na małą literę.
źródło
Domyślnie Lollipop zawiera „textAllCaps true”, więc musisz ręcznie ustawić wartość false
źródło
Dodaj Androida: textAllCaps = "false" w
<Button>
znaczniku, który to jest.źródło
Jest łatwiejszy sposób, który działa dla wszystkich przycisków, wystarczy zmienić wygląd przycisków w motywie, spróbuj tego:
w wartości-21 / styles.xml
PS: zalecane jest przestrzeganie zasad projektowania materiałów, powinieneś wyświetlać duży tekst w Buttons, http://www.google.com/design/spec/components/buttons.html
źródło
Korzystanie z android.support.v7.widget.AppCompatButton w układzie XML pozwoli ci uniknąć konieczności posiadania układu 21 lub programowej zmiany czegokolwiek. Oczywiście będzie to również działać z biblioteką AppCompat v7.
Mam nadzieję że to pomoże.
źródło
Użyj tej linii android: textAllCaps = "false" w swoim pliku xml
źródło
W Android Studio IDE musisz kliknąć ikonę Filtruj, aby wyświetlić właściwości eksperta. Wtedy zobaczysz
textAllCaps
nieruchomość. Zaznacz to, a następnie odznacz.źródło
Możesz dodać
android:textAllCaps="false"
do przycisku.Tekst przycisku może zostać przekształcony na duże litery według motywu aplikacji, który dotyczy wszystkich przycisków. Sprawdź pliki motywów / stylów, aby ustawić atrybut
android:textAllCaps
.źródło
Jawa:
Kotlin:
XML:
Style:
W układzie:
źródło
Jeśli przyjechałeś tutaj, ponieważ tekst przycisku na Facebooku jest wyświetlany wielkimi literami, po prostu dodaj go
android:textAllCaps="false"
do pliku xml. To zadziałało dla mnie.źródło
OK, właśnie na to wpadłem. Przyciski w Lollipop wychodzą z wielkich liter ORAZ czcionka resetuje się do „normalnej”. Ale w moim przypadku (Android 5.02) działał poprawnie w jednym układzie, ale nie w innym !?
Zmiana interfejsów API nie działała.
Ustawienie wszystkich wielkich liter wymaga min API 14, a czcionka nadal resetuje się do „normalnej”.
To dlatego, że style materiałów Androida wymuszają zmianę stylów, jeśli nie ma jednego zdefiniowanego (dlatego działał w jednym z moich układów, a nie w drugim, ponieważ zdefiniowałem styl).
Łatwym rozwiązaniem jest więc zdefiniowanie stylu w manifeście dla każdego działania, które w moim przypadku było po prostu:
android: theme = "@ android: style / Theme.NoTitleBar.Fullscreen"
(mam nadzieję, że to komuś pomoże, uratowałoby mi parę godzin ostatniej nocy)
źródło
Jeśli używasz
appcompat-v7
, możesz podklasyAppCompatButton
isetSupportAllCaps(false)
, a następnie użyć tej klasy do wszystkich przycisków.Zobacz AppCompatButton # setSupportAllCaps (boolean) Dokumenty na Androida.
źródło
Domyślnie Button w Androidzie zawiera słowo kluczowe all caps. Jeśli chcesz, aby tekst przycisku był pisany małymi lub wielkimi literami, możesz wyłączyć
textAllCaps
flagę za pomocąandroid:textAllCaps="false"
źródło
Nie wiem, dlaczego odpowiedź @ user1010160 uzyskała ocenę 0. Dałbym +1, gdybym miał wystarczająco dużo reputacji.
Ponieważ moja aplikacja jest zaprojektowana dla API mniejszych niż 14 i nie chciałem dodawać kodu do mojego programu, nie znalazłem rozwiązania, dopóki nie przeczytałem jego odpowiedzi. Powiedział, że nawet jeśli zrobiłeś to, co jest potrzebne w stylach aplikacji, to nie zadziała, dopóki nie dodasz stylu do swojej aktywności i nie ustawisz wartości textAllCaps na false.
It is not enough to have a style for the activity (my activity had a style), because the style might defaults to the AllCaps property. You have to set explicitly, in the activity too, that property to false.
I now have it both in the Application and in the Activity parts of the manifest file.
źródło
Another programmatic Kotlin Alternative:
mButton.transformationMethod = null
źródło