Ich verwende die Roboto Light-Schriftart in meiner App. Um die Schriftart einzustellen, muss ich android:fontFamily="sans-serif-light"
sie jeder Ansicht hinzufügen . Gibt es eine Möglichkeit, die Roboto-Schriftart als Standardschriftfamilie für die gesamte App zu deklarieren? Ich habe es so versucht, aber es schien nicht zu funktionieren.
<style name="AppBaseTheme" parent="android:Theme.Light"></style>
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:fontFamily">sans-serif-light</item>
</style>
android
android-fonts
Tomrozb
quelle
quelle
Antworten:
Die Antwort ist ja.
Globales Roboto-Licht für
TextView
undButton
Klassen:Wählen Sie einfach den gewünschten Stil aus der Liste theme.xml aus und erstellen Sie Ihren benutzerdefinierten Stil basierend auf dem ursprünglichen. Wenden Sie am Ende den Stil als Thema der Anwendung an.
Es funktioniert nur mit eingebauten Schriftarten wie Roboto, aber das war die Frage. Bei benutzerdefinierten Schriftarten (z. B. aus Assets geladen) funktioniert diese Methode nicht.
EDIT 13.08.15
Wenn Sie AppCompat-Designs verwenden, müssen Sie das
android:
Präfix entfernen . Zum Beispiel:Beachten Sie, dass das Präfix
buttonStyle
keinandroid:
Präfix enthält , es abertextViewStyle
enthalten muss.quelle
sans-serif-light
Wert? Gibt esfontFamily
irgendwo eine Liste gültiger Werte ? Ich habe die Dokumente sowie die Themen- und Stildateien in der Android-Quelle durchgesehen und kann nichts finden.Mit der Veröffentlichung von Android Oreo können Sie die Support-Bibliothek verwenden, um dieses Ziel zu erreichen.
Verweisen Sie auf Ihre Standardschriftfamilie im Hauptstil Ihrer App:
Weitere Informationen finden Sie unter https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html .
quelle
android:
PräfixBase.TextAppearance.AppCompat
, wird sie dort nicht verwendet.Gehen Sie folgendermaßen vor, um die Schriftart Ihrer App zu ändern:
res
Verzeichnisses erstellen Sie ein neues Verzeichnis und rufen Sie es auffont
.res
->values
->styles.xml
innen<resources>
-><style>
Fügen Sie Ihre Schriftart hinzu<item name="android:fontFamily">@font/font_name</item>
.Jetzt sollte sich Ihr gesamter App-Text in der Quelle befinden, die Sie hinzufügen.
quelle
UPDATES UNTEN LESEN
Ich hatte das gleiche Problem beim Einbetten einer neuen Schriftart und brachte sie schließlich dazu, die Textansicht zu erweitern und die Schriftart darin festzulegen.
Sie müssen die TextView-Elemente später in jedem Element von von nach ändern. Und wenn Sie den UI-Creator in Eclipse verwenden, zeigt er manchmal die TextViews nicht richtig an. War das einzige was für mich funktioniert ...
AKTUALISIEREN
Heutzutage verwende ich Reflection, um Schriften in der gesamten Anwendung zu ändern, ohne TextViews zu erweitern. Schauen Sie sich diesen SO-Beitrag an
UPDATE 2
Beginnend mit API Level 26 und verfügbar in der 'Support Library', die Sie verwenden können
Weitere Informationen: Schriftarten in XML
quelle
getContext()
wenn die Variable statisch ist. Sie sollten es auf Singleton-ähnliche Weise implementieren, da sonst der aktuelle Code nicht einmal kompiliert wird.Fügen Sie diese Codezeile in Ihre Datei res / value / styles.xml ein
Der gesamte Stil wird so aussehen
Ändern Sie "Circular_Medium" in Ihren eigenen Schriftnamen.
quelle
Sprechen Sie nicht über die Leistung. Bei benutzerdefinierten Schriftarten können Sie eine rekursive Methodenschleife durch alle Ansichten erstellen und die Schriftart festlegen, wenn es sich um eine Textansicht handelt:
Übergeben Sie in all Ihren Aktivitäten die aktuelle ViewGroup nach setContentView und fertig:
Für Fragment können Sie etwas Ähnliches tun.
quelle
recyclerView
wie die Hölle.Eine andere Möglichkeit, dies für die gesamte App zu tun, ist die Verwendung der Reflexion basierend auf dieser Antwort
Wenn Sie dann die Schriftarten überschreiben möchten, können Sie die Methode einfach aufrufen und ihr eine Karte mit Schriftarten wie folgt geben:
für die vollständige Beispiel Scheck
Dies funktioniert nur für Android SDK 21 und höher, für frühere Versionen überprüfen Sie das vollständige Beispiel
quelle
Verwenden Sie einfach diese Bibliothek, kompilieren Sie sie in Ihrer Notendatei
und verwenden Sie es in der onCreate-Methode in der Hauptaktivität
Dies ist der eleganteste superschnelle Weg, dies zu tun.
quelle
Dies ist Arbeit für mein Projekt, Quelle https://gist.github.com/artem-zinnatullin/7749076
Erstellen Sie ein Schriftartenverzeichnis im Asset-Ordner und kopieren Sie dann Ihre benutzerdefinierte Schriftart in das Schriftartenverzeichnis. Beispiel: Ich verwende trebuchet.ttf.
Erstellen Sie eine Klasse TypefaceUtil.java;
Thema in styles.xml bearbeiten unten hinzufügen
Beispiel in My styles.xml
Rufen Sie schließlich in Aktivität oder Fragment onCreate TypefaceUtil.java auf
quelle
Android bietet nicht viel Unterstützung für das Anwenden von Schriftarten in der gesamten App (siehe dieses Problem ). Sie haben 4 Möglichkeiten, um die Schriftart für die gesamte App festzulegen:
Details zu diesen Optionen finden Sie hier .
quelle
Ich weiß, dass diese Frage ziemlich alt ist, aber ich habe eine gute Lösung gefunden. Grundsätzlich übergeben Sie dieser Funktion ein Container-Layout, das die Schriftart auf alle unterstützten Ansichten und rekursiv in untergeordneten Layouts anwendet:
quelle
lediglich Set Schrift von App
normal
,sans
,serif
odermonospace
(nicht zu einer benutzerdefinierten Schriftart!), können Sie dies tun.Definieren Sie ein Thema und legen Sie das
android:typeface
Attribut auf die Schriftart fest, in der Sie Folgendes verwenden möchtenstyles.xml
:Wenden Sie das Thema auf die gesamte App in der
AndroidManifest.xml
Datei an:Android Referenz
quelle
Probieren Sie diese Bibliothek aus, sie ist leicht und einfach zu implementieren
https://github.com/sunnag7/FontStyler
quelle
Die Antwort ist nein, das kannst du nicht. Siehe Ist es möglich, eine benutzerdefinierte Schriftart für die gesamte Anwendung festzulegen? für mehr Informationen.
Es gibt Problemumgehungen, aber nichts in den Zeilen "eine einzige Codezeile hier und alle meine Schriftarten werden dies statt das sein ".
(Ich danke Google und Apple dafür). Benutzerdefinierte Schriftarten haben einen Platz, aber wenn sie leicht App-weit ersetzt werden könnten, hätte dies eine ganze Welt von Comic Sans- Anwendungen geschaffen.
quelle