Android 8.0 (niveau d'API 26) introduit les polices en XML, une fonctionnalité qui vous permet d'utiliser des polices en tant que 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 XML sur les appareils équipés d'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:
- Effectuez un clic droit sur le dossier res, puis accédez à New > Android resource directory (Nouveau > Répertoire de ressources Android). La fenêtre Nouveau répertoire de ressources s'affiche.
- Dans la liste Type de ressource, sélectionnez font, puis cliquez sur OK.
Remarque: Le nom du répertoire de ressources doit être font.
Figure 1 : Ajouter le répertoire de ressources de police
- 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
etR.font.typo_graphica
.Figure 2. Ajouter les fichiers de police dans le répertoire
res/font
- Double-cliquez sur un fichier de police pour prévisualiser les polices du fichier dans l'éditeur.
Figure 3. Aperçu du fichier de police.
Créer une famille de polices
Une famille de polices est un ensemble de fichiers de police accompagnés de détails 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. Le système peut ainsi sélectionner la police appropriée en fonction du style de texte que vous utilisez.
Pour créer une famille de polices, procédez comme suit dans Android Studio:
- Effectuez un clic droit sur le dossier
font
, puis sélectionnez New > Font resource file (Nouveau > Fichier de ressources de police). La fenêtre New Resource File (Nouveau fichier de ressources) s'affiche. - Saisissez le nom du fichier, puis cliquez sur OK. Le nouveau fichier XML de ressource de police s'ouvre dans l'éditeur.
- Placez chaque attribut de fichier de police, de style et d'épaisseur dans l'élément
<font>
. Le code XML suivant illustre l'ajout d'attributs liés à la police dans le fichier XML de ressources 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 les 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
bascule automatiquement selon les besoins pour utiliser les fichiers de polices de cette famille.
Ajouter des polices à un TextView
Pour définir une police pour un élément TextView
, effectuez l'une des opérations suivantes:
- Dans le fichier XML de mise en page, définissez l'attribut
fontFamily
sur le fichier de polices auquel vous souhaitez accéder.<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/lobster"/>
- Ouvrez la fenêtre Properties (Propriétés) pour définir la police de
TextView
.- Sélectionnez une vue pour ouvrir la fenêtre Propriétés.
Remarque:La fenêtre Properties (Propriétés) n'est disponible que lorsque l'éditeur de conception est ouvert. Sélectionnez l'onglet Design (Conception) en bas de la fenêtre.
- Développez la propriété textAppearance, puis sélectionnez la police dans la liste fontFamily.
-
Figure 4. Sélectionnez la police dans la fenêtre Properties (Propriétés).
- Sélectionnez une vue pour ouvrir 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 la police définie dans TextView
.
![Prévisualiser les polices dans l'aperçu de mise en page](https://developer.android.com/static/guide/topics/ui/images/look-and-feel/fonts-in-xml/xml-font-preview.png?authuser=5&hl=fr)
Figure 5 : Aperçu des polices dans l'aperçu de mise en page
Ajouter des polices à un style
Ouvrez le fichier styles.xml
et définissez l'attribut fontFamily
sur le fichier de polices 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 les polices par programmation, appelez la méthode getFont(int)
et indiquez 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 sélectionne le style qui vous convient le mieux parmi les informations sur les polices, vous pouvez utiliser la méthode setTypeface(android.graphics.Typeface, int)
pour définir la police de caractères 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 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 les polices par programmation, appelez la méthode ResourceCompat.getFont(Context, int)
et fournissez une instance de Context
ainsi que l'identifiant de ressource.
Kotlin
val typeface = ResourcesCompat.getFont(context, R.font.myfont)
Java
Typeface typeface = ResourcesCompat.getFont(context, R.font.myfont);