Ich möchte das android:fontFamily
in Android ändern, sehe aber keine vordefinierten Schriftarten in Android. Wie wähle ich eine der vordefinierten aus? Ich muss mein eigenes TypeFace nicht wirklich definieren, aber alles, was ich brauche, ist etwas anderes als das, was es gerade zeigt.
<TextView
android:id="@+id/HeaderText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="52dp"
android:gravity="center"
android:text="CallerBlocker"
android:textSize="40dp"
android:fontFamily="Arial"
/>
Es scheint, dass das, was ich dort oben getan habe, nicht wirklich funktioniert! Übrigens android:fontFamily="Arial"
war ein dummer Versuch!
Antworten:
Ab Android 4.1 / 4.2 / 5.0 sind die folgenden Roboto- Schriftfamilien verfügbar:
in Kombination mit
Diese 16 Varianten sind möglich:
fonts.xml
quelle
android:fontFamily="sans-serif-black-small-caps"
funktioniert nicht. Weiß jemand Bescheid?android:fontFamily
auf TextView.Auf diese Weise können Sie die Schriftart programmgesteuert einstellen:
Legen Sie die Schriftartdatei in Ihrem Assets-Ordner ab. In meinem Fall habe ich ein Unterverzeichnis namens fonts erstellt.
BEARBEITEN: Wenn Sie sich fragen, wo sich Ihr Assets-Ordner befindet, lesen Sie diese Frage
quelle
Ab Android-Studio 3.0 sehr einfach, die Schriftfamilie zu ändern
Mit der Support-Bibliothek 26 funktioniert es auf Geräten mit Android API Version 16 und höher
Erstellen Sie einen Ordner
font
unter demres
Verzeichnis. Laden Sie die gewünschte Schriftart herunter und fügen Sie sie in denfont
Ordner ein. Die Struktur sollte ungefähr so aussehen wie untenHinweis: Ab Android Support Library 26.0 müssen Sie beide Attributgruppen (android: und app :) deklarieren, um sicherzustellen, dass Ihre Schriftarten auf Geräten mit Api 26 oder niedriger geladen werden.
Jetzt können Sie die Schriftart im Layout mit ändern
Programmatisch ändern
Um die Schriftart mit styles.xml zu ändern, erstellen Sie einen Stil
und wende diesen Stil auf an
TextView
Sie können auch Ihre eigene Schriftfamilie erstellen
- Klicken Sie mit der rechten Maustaste auf den Schriftartenordner und gehen Sie zu Neu> Schriftressourcendatei . Das Fenster Neue Ressourcendatei wird angezeigt.
- Geben Sie den Dateinamen ein und klicken Sie auf OK . Die neue XML-Schriftartressource wird im Editor geöffnet.
Schreiben Sie hier beispielsweise Ihre eigene Schriftfamilie
Dies ist einfach eine Zuordnung eines bestimmten fontStyle und fontWeight zu der Schriftartressource, die zum Rendern dieser bestimmten Variante verwendet wird. Gültige Werte für fontStyle sind normal oder kursiv. und fontWeight entspricht der CSS-Spezifikation für die Schriftgröße
1. Um die Schriftfamilie im Layout zu ändern, können Sie schreiben
2. Programmgesteuert ändern
So ändern Sie die Schriftart der gesamten App Fügen Sie diese beiden Zeilen in AppTheme hinzu
Sehen Sie die Dokumentation , Android benutzerdefinierten Schriftarten Tutorial Für weitere Informationen
quelle
getResources()
? EDIT : Diese Zeile am Ende Ihrer Antwort hat bei mir funktioniert:Typeface typeface = ResourcesCompat.getFont(context, R.font.myfont);
android:fontWeight
undapp:fontWeight
Ich musste
/system/etc/fonts.xml
kürzlich ein Projekt analysieren . Hier sind die aktuellen Schriftfamilien ab Lollipop:Hier ist der Parser (basierend auf FontListParser ):
Fühlen Sie sich frei, die oben genannte Klasse in Ihrem Projekt zu verwenden. Sie können Ihren Benutzern beispielsweise eine Auswahl von Schriftfamilien geben und die Schriftart nach ihren Wünschen festlegen.
Ein kleines unvollständiges Beispiel:
quelle
getSystemFonts()
, bekam ich eine Ausnahmeorg.xmlpull.v1.XmlPullParserException: END_TAG expected (position:START_TAG (empty) <axis tag='wdth' stylevalue='100.0'>@219:51 in java.io.InputStreamReader@f001fb3)
In Android können Sie keine benutzerdefinierten Schriftarten aus dem XML-Layout festlegen. Stattdessen müssen Sie die spezifische Schriftartdatei im Assets-Ordner Ihrer App bündeln und programmgesteuert festlegen. Etwas wie:
Beachten Sie, dass Sie diesen Code erst ausführen können, nachdem setContentView () aufgerufen wurde. Außerdem werden nur einige Schriftarten von Android unterstützt und sollten in einem
.ttf (TrueType)
oder.otf (OpenType)
Format vorliegen. Selbst dann funktionieren einige Schriftarten möglicherweise nicht.Dies ist eine Schriftart, die definitiv unter Android funktioniert. Mit dieser Schriftart können Sie bestätigen, dass Ihr Code funktioniert, falls Ihre Schriftartdatei von Android nicht unterstützt wird.
Android O Update: Dies ist jetzt mit XML in Android O möglich , basierend auf Rogers Kommentar.
quelle
So programmieren Sie Roboto programmgesteuert:
quelle
Es ist das gleiche wie
android:typeface
.Integrierte Schriftarten sind:
Siehe Android: Schrift .
quelle
setTypeface()
. NämlichfontFamily
,typeface
undtextStyle
. Aber ich kann für mein ganzes Leben nicht herausfinden, wie diese genau kombiniert werden, um eine konkrete Schriftinstanz aufzulösen. Hat jemand das herausgefunden? Googles Dokumentation ist weniger als hilfreich ...Wenn Sie es programmgesteuert möchten, können Sie es verwenden
Wo
SANS_SERIF
Sie verwenden können:DEFAULT
DEFAULT_BOLD
MONOSPACE
SANS_SERIF
SERIF
Und wo können
ITALIC
Sie verwenden:BOLD
BOLD_ITALIC
ITALIC
NORMAL
Alles ist auf Android-Entwicklern angegeben
quelle
Ich verwende eine ausgezeichnete Bibliothek Kalligraphie von Chris Jenx, mit der Sie benutzerdefinierte Schriftarten in Ihrer Android-Anwendung verwenden können. Versuche es!
quelle
Was Sie wollen, ist nicht möglich. Sie müssen
TypeFace
Ihren Code festlegen .In
XML
was Sie tun können , istAnsonsten kann man mit den Fonts in XML nicht viel spielen. :) :)
Denn
Arial
Sie müssen in Ihrem Code die Schriftart eingeben.quelle
Eine einfache Möglichkeit, die Schriftarten zu verwalten, besteht darin, sie über Ressourcen als solche zu deklarieren:
Dies basiert hier und hier auf dem Quellcode
quelle
Dynamisch können Sie die Schriftfamilie ähnlich wie android: fontFamily in XML festlegen, indem Sie Folgendes verwenden:
Dies ist die Liste der verwendeten Standardschriftfamilien . Verwenden Sie eine dieser Schriftarten , indem Sie die doppelte Anführungszeichenfolge "serifenlos-mittel" ersetzen.
"mycustomfont.ttf" ist die ttf-Datei. Der Pfad befindet sich in src / assets / fonts / mycustomfont.ttf. Weitere Informationen zur Standardschrift finden Sie in dieser Standardschriftfamilie
quelle
Stellen Sie die Schriftart einfach programmgesteuert auf eine beliebige Textansicht aus dem Verzeichnis res> font ein
quelle
Ich denke, ich bin zu spät, aber vielleicht ist diese Lösung für andere hilfreich. Wenn Sie eine benutzerdefinierte Schriftart verwenden möchten, legen Sie Ihre Schriftartdatei in Ihrem Schriftartenverzeichnis ab.
quelle
Mit einigem Ausprobieren habe ich Folgendes gelernt.
Innerhalb der * .xml können Sie die Standardschriftarten mit den folgenden Funktionen kombinieren, nicht nur mit der Schrift:
Bei diesen beiden Stilen war es in keinem anderen Fall erforderlich, eine Schriftart zu verwenden. Die Auswahl an Kombinationen ist mit fontfamily & textStyle viel größer.
quelle
Der gültige Wert von android: fontFamily ist in /system/etc/system_fonts.xml (4.x) oder /system/etc/fonts.xml (5.x) definiert. Der Gerätehersteller kann dies jedoch ändern, sodass die tatsächliche Schriftart, die beim Festlegen des fontFamily-Werts verwendet wird, von der oben genannten Datei des angegebenen Geräts abhängt.
In AOSP ist die Arial-Schriftart gültig, muss jedoch mit "arial" und nicht mit "Arial" definiert werden, z. B. android: fontFamily = "arial" . Schauen Sie sich Kitkats system_fonts.xml an
/////////////////////////////////////////////////////////// //////////////////////////////
Es gibt drei relevante XML-Attribute zur Definition einer "font" in layout-- android: family , android: Schrift und android: Textart . Die Kombination von "fontFamily" und "textStyle" oder "typeface" und "textStyle" kann verwendet werden, um das Erscheinungsbild von Schriftarten im Text zu ändern. Code-Snippet in TextView.java wie folgt :
Aus dem Code können wir sehen:
quelle
Hier ist eine einfachere Möglichkeit , die in einigen Fällen funktionieren kann. Das Prinzip besteht darin, eine nicht sichtbare TextVview in Ihr XML-Layout einzufügen und deren typeFace im Java-Code abzurufen .
Das Layout in der XML-Datei:
Und der Java-Code:
Es hat bei mir funktioniert (zum Beispiel in einem TextSwitcher).
quelle
Versuche dies:
quelle
Sie können dies auch tun, indem Sie einen Schriftartenordner unter dem Verzeichnis res wie unten hinzufügen.
Wählen Sie dann Schriftart als Ressourcentyp aus.
Sie finden verfügbare Schriftarten unter https://www.1001fonts.com/ und extrahieren dann die TTF-Dateien in dieses Schriftartenverzeichnis.
Zum Schluss ändern Sie einfach die XML-Datei, die Ihre Textansicht enthält, indem Sie android: fontFamily: "@ font / urfontfilename" hinzufügen.
quelle
app:fontFamily=
jedoch verwenden, alles andere ist das gleiche.Eine einfache Möglichkeit besteht darin, die gewünschte Schriftart in das Projekt einzufügen.
Gehen Sie zu Datei-> Neu-> Neues Ressourcenverzeichnis. Wählen Sie die Schriftart aus
Dadurch wird ein neues Verzeichnis ( Schriftart ) in Ihren Ressourcen erstellt.
Laden Sie Ihre Schriftart (.ttf) herunter . Ich benutze https://fonts.google.com für das gleiche
Fügen Sie dies Ihrem Schriftartenordner hinzu und verwenden Sie sie dann im XML oder programmgesteuert.
XML -
Programmatisch -
quelle
ResourcesCompat.getFont
Methodequelle
Wenn Sie eine TextView an so vielen Stellen mit derselben Schriftfamilie verwenden möchten, erweitern Sie die TextView-Klasse und legen Sie Ihre Schriftart wie folgt fest: -
Verwenden Sie dann diese benutzerdefinierte Klasse in XML für die Textansicht wie folgt: -
quelle
Wenn Sie Android Studio 3.5+ verwenden, ist das Ändern der Schriftart sehr einfach. Wählen Sie das Text-Widget in der Entwurfsansicht aus und aktivieren Sie fontFamily im Attributfenster. Die Wert-Dropdown-Liste enthält alle verfügbaren Schriftarten, aus denen Sie eine auswählen können. Wenn Sie nach Google Fonts suchen, klicken Sie auf die Option Weitere Schriftarten.
Attributfenster
Google Fonts
quelle
Ich möchte nur erwähnen, dass die Hölle mit den Schriftarten in Android bald zu Ende geht, denn dieses Jahr haben wir auf Google IO endlich diese -> https://developer.android.com/preview/features/working-with-fonts. html
Jetzt gibt es einen neuen Ressourcentyp, eine Schriftart, und Sie können alle Ihre Anwendungsschriftarten im Ordner res / fonts ablegen und dann mit R.font.my_custom_font darauf zugreifen, genau wie Sie auf Zeichenfolgen- Res-Werte, zeichnbare Res-Werte usw. zugreifen können. Sie haben sogar eine Chance um eine XML-Datei für Schriftarten zu erstellen , die aus Ihren benutzerdefinierten Schriftarten besteht (über Kursiv, Fett und Unterstrich).
Lesen Sie den obigen Link für weitere Informationen. Mal sehen, die Unterstützung.
quelle
Redman
die Antwort des Benutzers oben ist immer noch ein notwendiger Teil der Lösung.Dafür steht eine schöne Bibliothek zur Verfügung
quelle
Die neue Schriftartressource ermöglicht die direkte Einstellung
font
mitquelle
Sie setzen den Stil
res/layout/value/style.xml
so ein:und um diesen Stil bei der
main.xml
Verwendung von Dateien zu verwenden:quelle
Für Android-Studio 3 und höher können Sie diesen Stil und dann alle verwenden
textView
Schriftarten in der App ändern.Erstellen Sie diesen Stil in Ihrem
style.xml
:Verwenden Sie es dann in Ihrem Thema:
quelle
Der einfachste Weg , die Schriftart programmgesteuert zu einer Textansicht hinzuzufügen, besteht darin, zunächst die Schriftartdatei in Ihrem Assets-Ordner im Projekt hinzuzufügen. Ihr Schriftpfad sieht beispielsweise folgendermaßen aus:
assets/fonts/my_font.otf
Und fügen Sie es einer Textansicht hinzu als:
Kotlin
Java
quelle
Hier sehen Sie alle verfügbaren fontFamily-Werte und die Namen der entsprechenden Schriftdateien (diese Datei wird in Android 5.0+ verwendet). Auf Mobilgeräten finden Sie es in:
(Für Android 4.4 und niedriger mit dieser Version, aber ich denke, das
fonts.xml
hat ein klareres Format und ist leicht zu verstehen.)Zum Beispiel,
Das Attribut name
name="sans-serif"
desfamily
Tags definiert den Wert, den Sie in android verwenden können: fontFamily.Das
font
Tag definiert die entsprechenden Schriftdateien.In diesem Fall können Sie die Quelle ignorieren
<!-- fallback fonts -->
, die für die Fallback-Logik von Schriftarten verwendet wird.quelle