2012-12-23 14 views
7

Ich habe eine Android-App, die etwas angepasst werden muss, wenn der Benutzer die Schriftgröße auf übergroß setzt (über Einstellungen -> Anzeige -> Schriftgröße in 4.0 und höher).Ermitteln der Schriftgröße für Benutzer

Gibt es eine einfache Möglichkeit für mich zu sagen, was die Schriftgröße Vorlieben des Benutzers ist

Aktualisiert:
in meinem layout.xml Ich habe Zeilen wie die Einrichtung einer Taste

android:textAppearance="?android:attr/textAppearanceMedium" 
android:textStyle="bold" 
android:typeface="sans" 

Beachten Sie, dass ich die Schriftgröße nicht direkt festlege. Dieses Layout funktioniert und sieht in allen Fällen gut aus, außer für die Einstellung Extra Large. In diesem Fall wird der Text der Schaltfläche aufgrund von Platzbeschränkungen in zwei Zeilen umgewandelt.

Mein Ziel ist es, eine leichte Formulierung Änderung im Fall von Extra Large zu machen, so dass es nicht

Antwort

6

umbrochen Es gibt einen FONT_SCALE Parameter sollten Sie für das System abfragen können. Ich habe es selbst nicht verwendet, aber ich glaube, das Abrufen seines Wertes etwas würde wie folgt aussehen:

float fontScale = Settings.System.getFloat(context.getContentResolver(), Settings.System.FONT_SCALE) 

aber ich würde auch in der Regel darauf hinweisen, dass Sie sollten nicht direkt mit diesem Wert zu tun haben. Verwenden Sie stattdessen sp Einheiten für Textinhalt, so dass Sie sich keine Gedanken über die Anpassung an benutzerdefinierte Schriftgrößen machen müssen, sondern das System damit umgehen.

Siehe auch: Why should we use sp for font sizes in Android?

+0

Guter Punkt über sp, aber nicht relevant in diesem Fall aktualisierten Informationen in Frage sehen – Noah

+0

fontScale 1.3 für Extralarge zurückzukehren. Wäre nett, dafür eine Konstante zu finden, aber ich kann es für jetzt verwenden. – Noah

+0

Seltsam Ihr Code wirft für mich eine 'SettingNotFoundException: font_scale', aber ich bin sicher, dass Ihr und mein Code korrekt ist (Android 4.2.2) – rekire

Verwandte Themen