Ajouter une police en tant que ressource XML

Essayer Compose
Jetpack Compose est le kit d'outils d'UI recommandé pour Android. Découvrez comment utiliser du texte dans Compose.

Android 8.0 (niveau d'API 26) introduit les polices en XML, une fonctionnalité qui vous permet d'utiliser les polices comme ressources. Vous pouvez ajouter le fichier font dans le dossier res/font/ pour regrouper les polices en tant que ressources. Ces polices sont compilées dans votre fichier R et sont automatiquement disponibles dans Android Studio. Vous pouvez accéder aux ressources de police à l'aide du type de ressource font. Par exemple, pour accéder à une ressource de police, utilisez @font/myfont ou R.font.myfont.

Pour utiliser la fonctionnalité de polices dans XML sur les appareils exécutant Android 4.1 (niveau d'API 16) ou version ultérieure, utilisez la bibliothèque Support 26.0. Pour en savoir plus sur l'utilisation de la bibliothèque Support, consultez la section Utiliser la bibliothèque Support.

Pour ajouter des polices en tant que ressources, procédez comme suit dans Android Studio :

  1. Effectuez un clic droit sur le dossier res, puis sélectionnez New > Android resource directory (Nouveau > Répertoire des ressources Android). La fenêtre New Resource Directory (Nouveau répertoire de ressources) s'affiche.
  2. Dans la liste Type de ressource, sélectionnez font, puis cliquez sur OK.

    Remarque : Le nom du répertoire de ressources doit être font.

    Ajouter le répertoire de ressources de police

    Figure 1. Ajout du répertoire de ressources de la police.

  3. Ajoutez vos fichiers de police dans le dossier font.

    La structure de dossiers ci-dessous génère R.font.dancing_script, R.font.lobster et R.font.typo_graphica.

    Ajouter les fichiers de police dans le répertoire de ressources

    Figure 2. Ajoutez les fichiers de police dans le répertoire res/font.

  4. Double-cliquez sur un fichier de police pour prévisualiser les polices du fichier dans l'éditeur. Prévisualiser le fichier de police

    Figure 3. Prévisualiser le fichier de police.

Créer une famille de polices

Une famille de polices est un ensemble de fichiers de polices avec des informations sur le style et l'épaisseur. Dans Android, vous pouvez créer une famille de polices en tant que ressource XML et y accéder en tant qu'unité unique, au lieu de référencer chaque style et épaisseur en tant que ressources distinctes. Vous permettez ainsi au système de sélectionner la bonne police en fonction du style de texte que vous utilisez.

Pour créer une famille de polices, procédez comme suit dans Android Studio :

  1. Effectuez un clic droit sur le dossier font, puis sélectionnez Nouveau > Fichier de ressources de police. La fenêtre New Resource File (Nouveau fichier de ressources) s'affiche.
  2. Saisissez le nom du fichier, puis cliquez sur OK. Le nouveau fichier XML de ressource de police s'ouvre dans l'éditeur.
  3. Encapsulez chaque fichier de police, style et attribut de poids dans l'élément <font>. Le code XML suivant illustre l'ajout d'attributs liés à la police dans le code XML de la ressource de police :
    <?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>

Utiliser des polices dans des mises en page XML

Utilisez vos polices, qu'il s'agisse d'un fichier de police unique ou d'une police d'une famille de polices, dans des objets TextView ou dans des styles à l'aide de l'attribut fontFamily.

Remarque : Lorsque vous utilisez une famille de polices, TextView s'active automatiquement, selon les besoins, pour utiliser les fichiers de police de cette famille.

Ajouter des polices à un élément TextView

Pour définir une police pour un TextView, procédez de l'une des manières suivantes :

  • Dans le fichier XML de mise en page, définissez l'attribut fontFamily sur le fichier de police auquel vous souhaitez accéder.
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:fontFamily="@font/lobster"/>
  • Ouvrez la fenêtre Propriétés pour définir la police de TextView.
    1. Sélectionnez une vue pour ouvrir la fenêtre Propriétés.

      Remarque : La fenêtre Propriétés n'est disponible que lorsque l'éditeur de mise en page est ouvert. Sélectionnez l'onglet Conception en bas de la fenêtre.

    2. Développez la propriété textAppearance, puis sélectionnez la police dans la liste fontFamily.
    3. Sélectionner la police dans &quot;Propriétés&quot;

      Figure 4. Sélectionnez la police dans la fenêtre Propriétés.

L'aperçu de la mise en page d'Android Studio, affiché dans le volet le plus à droite de la figure 5, vous permet de prévisualiser l'ensemble de polices défini dans TextView.

Prévisualiser les polices dans l&#39;aperçu de la mise en page

Figure 5. Aperçu des polices dans l'aperçu de la mise en page.

Ajouter des polices à un style

Ouvrez le fichier styles.xml et définissez l'attribut fontFamily sur le fichier de police auquel vous souhaitez accéder.

  • <style name="customfontstyle" parent="@android:style/TextAppearance.Small">
        <item name="android:fontFamily">@font/lobster</item>
    </style>
  • Utiliser des polices par programmation

    Pour récupérer des polices de manière programmatique, appelez la méthode getFont(int) et fournissez l'identifiant de ressource de la police que vous souhaitez récupérer. Cette méthode renvoie un objet Typeface. Bien que le système choisisse le meilleur style pour vous à partir des informations sur les polices, vous pouvez utiliser la méthode setTypeface(android.graphics.Typeface, int) pour définir la typographie avec des styles spécifiques.

    Remarque : TextView effectue cette opération pour vous.

    Kotlin

    val typeface = resources.getFont(R.font.myfont)
    textView.typeface = typeface

    Java

    Typeface typeface = getResources().getFont(R.font.myfont);
    textView.setTypeface(typeface);

    Utiliser la bibliothèque Support

    La bibliothèque Support 26.0 est compatible avec les polices au format XML sur les appareils équipés d'Android 4.1 (niveau d'API 16) ou version ultérieure.

    Remarque : Lorsque vous déclarez des familles de polices dans une mise en page XML via la bibliothèque Support, utilisez l'espace de noms app pour vous assurer que vos polices se chargent.

    <?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>

    Pour récupérer des polices de manière programmatique, appelez la méthode ResourceCompat.getFont(Context, int) et fournissez une instance de Context et l'identifiant de ressource.

    Kotlin

    val typeface = ResourcesCompat.getFont(context, R.font.myfont)

    Java

    Typeface typeface = ResourcesCompat.getFont(context, R.font.myfont);