Android 8.0 (niveau d'API 26) introduit les polices au format XML, une fonctionnalité qui
vous permet d'utiliser des 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és 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
. Pour
par exemple, pour accéder à une ressource de police,
utilisez @font/myfont
ou R.font.myfont
.
Pour utiliser la fonctionnalité 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 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 à Nouveau > Répertoire de ressources Android. La La fenêtre New Resource Directory (Nouveau répertoire de ressources) s'affiche.
- Dans la liste Type de ressource, sélectionnez police, puis cliquez sur
OK.
Remarque: Le nom du répertoire de ressources doit être 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
- Double-cliquez sur un fichier de police pour prévisualiser les polices du fichier dans l'éditeur.
Créer une famille de polices
Une famille de polices est un ensemble de fichiers de police avec des détails de style et d’épaisseur. Dans Android, vous pouvez créer une famille de polices en tant que ressource XML et y accéder comme une seule unité, au lieu de référencer chaque style et épaisseur comme des ressources distinctes. En faisant cela, vous laissez le système 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:
- Effectuez un clic droit sur le dossier
font
, puis sélectionnez Nouveau > Fichier de ressources de police. Fenêtre New Resource File (Nouveau fichier de ressources) s'affiche. - Saisissez le nom du fichier, puis cliquez sur OK. Nouveau fichier XML de ressources de police s'ouvre dans l'éditeur.
- Placez chaque fichier de police, style et attribut d'épaisseur dans les
Élément
<font>
. Le code XML suivant illustre l'ajout 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, soit un fichier de polices unique, soit une police issue d'un
famille de polices, dans TextView
dans des objets ou dans des styles à l'aide de la
fontFamily
.
Remarque:Lorsque vous utilisez une famille de polices,
TextView
s'active automatiquement, si nécessaire, pour utiliser
les fichiers de police
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 la 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 Properties (Propriétés) pour définir la police du
TextView
- Sélectionnez une vue pour ouvrir la fenêtre Properties (Propriétés).
Remarque:La fenêtre Properties (Propriétés) est disponible. uniquement lorsque l'éditeur de conception est ouvert. Sélectionnez l'onglet Design (Conception) sur en bas de la fenêtre.
- Développez la propriété textAppearance, puis sélectionnez la police. dans la liste fontFamily.
- Sélectionnez une vue pour ouvrir la fenêtre Properties (Propriétés).
L'aperçu de mise en page Android Studio, illustré dans le volet le plus à droite de la figure 5,
vous permet de prévisualiser la police définie dans TextView
.
Ajouter des polices à un style
Ouvrez le fichier styles.xml
et définissez le fontFamily
au 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 par programmation, appelez la méthode
getFont(int)
et indiquez la
l'identifiant de ressource de la police que vous souhaitez récupérer. Cette méthode renvoie
Typeface
. Bien que le système choisisse le meilleur
du style d'écriture des polices vous pouvez utiliser
setTypeface(android.graphics.Typeface, int)
pour définir la police de caractères avec des styles spécifiques.
Remarque:TextView
s'en charge 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 accepte 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 des polices par programmation, 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);