Mit Android 8.0 (API-Ebene 26) werden Schriftarten in XML eingeführt. Mit dieser Funktion können Sie Schriftarten als Ressourcen verwenden. Sie können die Datei font im Ordner res/font/ hinzufügen, um Schriftarten als Ressourcen zu bündeln. Diese Schriftarten werden in Ihrer Datei R kompiliert und sind automatisch in Android Studio verfügbar. Sie können mit dem Ressourcentyp font auf die Schriftartressourcen zugreifen. Um beispielsweise auf eine Schriftartressource zuzugreifen, verwenden Sie @font/myfont oder R.font.myfont.
Wenn Sie die Funktion „Schriftarten in XML“ auf Geräten mit Android 4.1 (API-Level 16) und höher verwenden möchten, nutzen Sie die Support Library 26.0. Weitere Informationen zur Verwendung der Support Library finden Sie im Abschnitt Support Library verwenden.
So fügen Sie Schriftarten als Ressourcen in Android Studio hinzu:
- Klicken Sie mit der rechten Maustaste auf den Ordner res und wählen Sie Neu > Android-Ressourcenverzeichnis aus. Das Fenster Neues Ressourcenverzeichnis wird angezeigt.
- Wählen Sie in der Liste Ressourcentyp die Option Schriftart aus und klicken Sie dann auf OK.
Hinweis: Der Name des Ressourcenverzeichnisses muss font lauten.
Abbildung 1. Fügen Sie das Schriftartressourcenverzeichnis hinzu.
- Fügen Sie Ihre Schriftartdateien in den Ordner
fontein.Mit der folgenden Ordnerstruktur werden
R.font.dancing_script,R.font.lobsterundR.font.typo_graphicageneriert.
Abbildung 2: Fügen Sie die Schriftartdateien dem Verzeichnis
res/fonthinzu. - Doppelklicken Sie auf eine Schriftartdatei, um sich die Schriftarten der Datei im Editor anzusehen.
Abbildung 3: Vorschau der Schriftartdatei
Schriftfamilie erstellen
Eine Schriftfamilie ist eine Gruppe von Schriftartdateien mit Stil- und Stärkendetails. In Android können Sie eine neue Schriftfamilie als XML-Ressource erstellen und als einzelne Einheit darauf zugreifen, anstatt auf jeden Stil und jede Stärke als separate Ressourcen zu verweisen. So kann das System die richtige Schriftart basierend auf dem verwendeten Textstil auswählen.
So erstellen Sie eine Schriftfamilie in Android Studio:
- Klicken Sie mit der rechten Maustaste auf den Ordner
fontund wählen Sie Neu > Schriftartressourcendatei aus. Das Fenster Neue Ressourcendatei wird angezeigt. - Geben Sie den Dateinamen ein und klicken Sie auf OK. Die neue XML-Datei für die Schriftartressource wird im Editor geöffnet.
- Schließen Sie jede Schriftartdatei, jedes Stil- und jedes Attribut für die Schriftstärke in das
<font>-Element ein. Das folgende XML-Beispiel zeigt, wie Schriftartattribute im XML der Schriftartressource hinzugefügt werden:<?xml version="1.0" encoding="utf-8"?> <font-family xmlns:android="http://schemas.android.com/apk/res/android"> <font android:fontStyle="normal" android:fontWeight="400" android:font="@font/lobster_regular" /> <font android:fontStyle="italic" android:fontWeight="400" android:font="@font/lobster_italic" /> </font-family>
Schriftarten in XML-Layouts verwenden
Sie können Ihre Schriftarten, entweder eine einzelne Schriftartdatei oder eine Schriftart aus einer Schriftfamilie, in TextView-Objekten oder in Stilen mit dem Attribut fontFamily verwenden.
Hinweis:Wenn Sie eine Schriftfamilie verwenden, wird TextView nach Bedarf automatisch aktiviert, um die Schriftartdateien aus dieser Familie zu verwenden.
TextViews Schriftarten hinzufügen
So legen Sie eine Schriftart für ein TextView fest:
- Legen Sie in der XML-Layoutdatei das Attribut
fontFamilyauf die Schriftartdatei fest, auf die Sie zugreifen möchten.<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/lobster"/>
- Öffnen Sie das Fenster Eigenschaften, um die Schriftart für
TextViewfestzulegen.- Wählen Sie eine Ansicht aus, um das Fenster Eigenschaften zu öffnen.
Hinweis:Das Fenster Eigenschaften ist nur verfügbar, wenn der Designeditor geöffnet ist. Wählen Sie unten im Fenster den Tab Design aus.
- Maximieren Sie die Eigenschaft textAppearance und wählen Sie dann die Schriftart aus der Liste fontFamily aus.
-
Abbildung 4: Die Schriftart im Fenster Properties auswählen
- Wählen Sie eine Ansicht aus, um das Fenster Eigenschaften zu öffnen.
In der Layoutvorschau von Android Studio, die im rechten Bereich in Abbildung 5 zu sehen ist, können Sie sich eine Vorschau des im TextView festgelegten Schriftartsets ansehen.
Abbildung 5: Vorschau von Schriftarten in der Layoutvorschau
Schriftarten einem Stil hinzufügen
Öffnen Sie die Datei styles.xml und legen Sie das Attribut fontFamily auf die Schriftartendatei fest, auf die Sie zugreifen möchten.
<style name="customfontstyle" parent="@android:style/TextAppearance.Small"> <item name="android:fontFamily">@font/lobster</item> </style>
Schriftarten programmatisch verwenden
Wenn Sie Schriftarten programmatisch abrufen möchten, rufen Sie die Methode getFont(int) auf und geben Sie die Ressourcen-ID der Schriftart an, die Sie abrufen möchten. Diese Methode gibt ein Typeface-Objekt zurück. Das System wählt zwar anhand der Schriftinformationen den besten Stil für Sie aus, Sie können aber mit der Methode setTypeface(android.graphics.Typeface, int) die Schriftart mit bestimmten Stilen festlegen.
Hinweis:Das TextView
erledigt das für Sie.
Kotlin
val typeface = resources.getFont(R.font.myfont) textView.typeface = typeface
Java
Typeface typeface = getResources().getFont(R.font.myfont); textView.setTypeface(typeface);
Support Library verwenden
Die Support Library 26.0 unterstützt Schriftarten in XML auf Geräten mit Android 4.1 (API-Level 16) und höher.
Hinweis: Wenn Sie Schriftfamilien im XML-Layout über die Support Library deklarieren, verwenden Sie den app-Namespace, damit Ihre Schriftarten geladen werden.
<?xml version="1.0" encoding="utf-8"?> <font-family xmlns:app="http://schemas.android.com/apk/res-auto"> <font app:fontStyle="normal" app:fontWeight="400" app:font="@font/myfont-Regular"/> <font app:fontStyle="italic" app:fontWeight="400" app:font="@font/myfont-Italic" /> </font-family>
Wenn Sie Schriftarten programmatisch abrufen möchten, rufen Sie die Methode ResourceCompat.getFont(Context, int) auf und geben Sie eine Instanz von Context und die Ressourcen-ID an.
Kotlin
val typeface = ResourcesCompat.getFont(context, R.font.myfont)
Java
Typeface typeface = ResourcesCompat.getFont(context, R.font.myfont);