Ich möchte meine eigene Textgröße in meiner Anwendung angeben, habe jedoch ein Problem damit.
Wenn ich die Schriftgröße in den Geräteeinstellungen ändere, ändert sich auch die Schriftgröße meiner Anwendung TextView
.
android
android-layout
textview
android-fonts
Vikasdeep Singh
quelle
quelle
Antworten:
Tatsächlich wirkt sich die Schriftgröße der Einstellungen nur auf die Größe in aus
sp
. Alles, was Sie tun müssen - definierentextSize
indp
stattsp
, dann ändern die Einstellungen die Textgröße in Ihrer App nicht.Hier ist ein Link zur Dokumentation: Abmessungen
Beachten Sie jedoch, dass das erwartete Verhalten darin besteht, dass die Schriftarten in allen Apps die Einstellungen des Benutzers berücksichtigen. Es gibt viele Gründe, warum ein Benutzer die Schriftgröße anpassen möchte, und einige von ihnen sind möglicherweise sogar medizinisch - sehbehinderte Benutzer. Die Verwendung
dp
anstelle vonsp
für Text kann dazu führen, dass einige Benutzer Ihrer App unfreiwillig diskriminiert werden.dh:
quelle
sp
und wann ich verwenden solltedp
. Ich habe hier eine wirklich gute Antwort bekommen: stackoverflow.com/questions/11638691/…Am einfachsten ist es, einfach Folgendes zu verwenden:
Wenn Sie mehr über die
textSize
Eigenschaft erfahren möchten, können Sie die Android-Entwicklerdokumentation überprüfen .quelle
Verwenden Sie den
dimension
Ressourcentyp so, wie Siestring
Ressourcen ( DOCS ) verwenden.dimens.xml
Deklarieren Sie in Ihrer Datei Ihre Dimensionsvariablen:Dann können Sie diese Werte wie folgt verwenden:
Sie können verschiedene
dimens.xml
Dateien für verschiedene Bildschirmtypen deklarieren . Auf diese Weise wird das gewünschte Aussehen Ihrer App auf verschiedenen Geräten garantiert.Wenn Sie nicht angeben
android:textSize
, verwendet das System die Standardwerte.quelle
Beachten Sie auch, dass beim Aufrufen von textSize im Code beim Aufrufen
textView.setTextSize(X)
die Nummer (X) als SP interpretiert wird. Verwenden SiesetTextSize(TypedValue.COMPLEX_UNIT_DIP, X)
diese Option , um Werte in dp festzulegen .quelle
Es ist nicht gut, DIP oder SP erneut per Code angeben zu müssen, wenn dies bereits in einer Datei dimen.xml definiert ist.
Ich denke, dass die beste Option darin besteht, PX zu verwenden, wenn ein dimen.xml-Wert verwendet wird:
Auf diese Weise können Sie bei Bedarf in der Datei dimen.xml von DP zu SP wechseln, ohne Code ändern zu müssen.
quelle
Eine einfache Möglichkeit, zu verhindern, dass die gesamte App von der Systemschriftgröße beeinflusst wird, besteht darin, die Konfiguration mithilfe einer Basisaktivität zu aktualisieren.
quelle
das kann helfen. Fügen Sie den Code in Ihre benutzerdefinierte Anwendung oder BaseActivity ein
Resource # updateConfiguration ist jedoch in API-Level 25 erschöpft, was bedeutet, dass es eines Tages in Zukunft nicht mehr unterstützt wird.
quelle
Sie können diesen Code verwenden:
Es löst Ihr Problem, aber Sie müssen wissen, dass Sie Benutzerentscheidungen respektieren sollten. Durch Ändern der Textgröße in den Geräteeinstellungen wird dieser Wert nicht geändert. Deshalb müssen Sie sp anstelle von dp verwenden . Mein Vorschlag ist daher, Ihre App mit verschiedenen Systemschriftgrößen (klein, normal, groß, ...) zu überprüfen.
quelle
Für Kotlin funktioniert es bei mir
quelle
ändere den DP auf sp es ist eine gute Übung für Android android: textSize = "18sp"
quelle
Wenn die verwendeten Einheiten SP und nicht DP sind und Sie die Skalierung von Systemschriftarten überschreiben möchten, müssen Sie nur eine Methode in der Aktivität überschreiben - siehe diesen Beitrag .
resources.updateConfiguration ist veraltet und fehlerhaft (auf Oreo hatte ich Probleme mit formatiertem Text).
quelle
getResources()
Aktivität überschreiben .Stellen Sie die Größe von TextView wie gewohnt in sp ein
android:textSize="32sp"
quelle
In Android 8 funktioniert diese Lösung für mich
Fügen Sie diesen Code in die Basisaktivität ein
Quelle https://stackoverflow.com/a/57225687/7985871
quelle