Schriftart als XML-Ressource hinzufügen

Compose ausprobieren
Jetpack Compose ist das empfohlene UI-Toolkit für Android. Informationen zum Verwenden von Text in Compose

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:

  1. Klicken Sie mit der rechten Maustaste auf den Ordner res und wählen Sie Neu > Android-Ressourcenverzeichnis aus. Das Fenster Neues Ressourcenverzeichnis wird angezeigt.
  2. 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.

    Schriftressourcenverzeichnis hinzufügen

    Abbildung 1. Fügen Sie das Schriftartressourcenverzeichnis hinzu.

  3. Fügen Sie Ihre Schriftartdateien in den Ordner font ein.

    Mit der folgenden Ordnerstruktur werden R.font.dancing_script, R.font.lobster und R.font.typo_graphica generiert.

    Schriftartdateien dem Ressourcenverzeichnis hinzufügen

    Abbildung 2: Fügen Sie die Schriftartdateien dem Verzeichnis res/font hinzu.

  4. Doppelklicken Sie auf eine Schriftartdatei, um sich die Schriftarten der Datei im Editor anzusehen. Vorschau der Schriftartdatei

    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:

  1. Klicken Sie mit der rechten Maustaste auf den Ordner font und wählen Sie Neu > Schriftartressourcendatei aus. Das Fenster Neue Ressourcendatei wird angezeigt.
  2. Geben Sie den Dateinamen ein und klicken Sie auf OK. Die neue XML-Datei für die Schriftartressource wird im Editor geöffnet.
  3. 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 fontFamily auf 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 TextView festzulegen.
    1. 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.

    2. Maximieren Sie die Eigenschaft textAppearance und wählen Sie dann die Schriftart aus der Liste fontFamily aus.
    3. Schriftart über „Eigenschaften“ auswählen

      Abbildung 4: Die Schriftart im Fenster Properties auswählen

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.

Vorschau von Schriftarten in der Layoutvorschau

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);