web-dev-qa-db-fra.com

Comment puis-je spécifier par exemple. Roboto-Medium ou Roboto-Black dans styles.xml

Des articles comme celui-ci Comment changer la police de TextView dans Android suggère que les variantes des polices Roboto que vous pouvez spécifier dans styles.xml dans Android 4.2 se résume à ce qui suit :

  • Ordinaire
  • Italique
  • Audacieux
  • Gras italique
  • Lumière
  • Italique clair
  • Mince
  • Mince-italique
  • Condensé régulier
  • Italique condensé
  • Gras condensé
  • Gras italique condensé

Cela exclut la possibilité de styliser TextViews en utilisant, par exemple,. les polices Roboto-Medium ou Roboto-Black.

Mais pourquoi Google ajoute-t-il des polices système qui ne peuvent pas être utilisées pour styliser vos TextViews? Il doit sûrement exister un moyen de spécifier toutes les polices Roboto à partir de styles.xml (c.-à-d. Ne pas avoir à incorporer les polices en tant qu'Assets et à créer des TextViews personnalisées dans le code) - mais comment?

61
ckibsen

Sur Android 5.0, vous pouvez configurer Roboto Medium avec sans-serif-medium.

Cette solution, issue de Google iosched 2014 , utilise sans-serif on Android pre-v21:

valeurs/styles.xml

<style name="MyStyle">
    <item name="Android:fontFamily">@string/font_fontFamily_medium</item>
</style>

valeurs/fonts.xml

<string name="font_fontFamily_medium">sans-serif</string>

values-v21/fonts.xml

<string name="font_fontFamily_medium">sans-serif-medium</string>
90
rciovati

NOUVELLE SOLUTION

Après Google I/O '17 vous pouvez créer plusieurs familles de polices dans le dossier res/font

<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:app="http://schemas.Android.com/apk/res-auto">
<font
    app:font="@font/roboto_light"
    app:fontStyle="normal"
    app:fontWeight="300" />
<font
    app:font="@font/roboto_bold"
    app:fontStyle="normal"
    app:fontWeight="700" />

</font-family>

et vous pouvez utiliser où vous voulez

 <style name="AppTheme.DefaultTextView" parent="Android:style/Widget.TextView">
    <item name="Android:textColor">@color/colorBlack</item>
    <item name="Android:fontFamily">@font/font_family_roboto</item>
</style>

font folderfont family

VIEILLE RÉPONSE

Merci pour Jakob Eriksson

réponse originale

Android:fontFamily="sans-serif"           // roboto regular
Android:fontFamily="sans-serif-light"     // roboto light
Android:fontFamily="sans-serif-condensed" // roboto condensed
Android:fontFamily="sans-serif-black"     // roboto black
Android:fontFamily="sans-serif-thin"      // roboto thin (Android 4.2)
Android:fontFamily="sans-serif-medium"    // roboto medium (Android 5.0)

dans le style:

<style name="AppTheme.DefaultTextView" parent="Android:style/Widget.TextView">
    <item name="Android:textSize">@dimen/text_view_text_size</item>
    <item name="Android:textColor">@color/black</item>
    <item name="Android:fontFamily">sans-serif-light</item>
    <item name="Android:textStyle">normal</item>
</style>

dans le thème de l'application:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/gray</item>
    <item name="Android:textViewStyle">@style/AppTheme.DefaultTextView</item>
</style>
33
Abror Esonaliyev

Je vous suggère d'utiliser des bibliothèques personnalisées telles que Android-RobotoTextView ou Calligraphie . Avec l'un de ceux-ci, vous pouvez définir la police d'une vue au format XML avec un attribut afin de pouvoir l'insérer dans styles.xml. Et ils fonctionnent avec la version précédente de Android que 4.0

4
Rampo

Support Library 26 introduite en utilisant des polices XML , et rétro-compatible avec Android API 14.

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

  1. Cliquez avec le bouton droit sur le dossier res et accédez à Nouveau> Android. La fenêtre Nouveau répertoire de ressources apparaît.

  2. Dans la liste Type de ressource, sélectionnez la police, puis cliquez sur OK. Remarque: le nom du répertoire de ressources doit être police.

Figure 1. Adding the font resource directory

  1. Ajoutez vos fichiers de polices dans le dossier des polices. La structure de dossiers ci-dessous génère R.font.dancing_script, R.font.lobster, et R.font.typo_graphica.

Figure 2. Adding the font files in the resource directory

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

Figure 3. Previewing the font file

Pour définir une police pour TextView, dans le fichier XML de présentation, 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"/>

L'aperçu de la mise en page Studio Android Studio vous permet de prévisualiser la police définie dans TextView.

Figure 4. Previewing fonts in layout preview

Pour ajouter une police à 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>

Si vous ne souhaitez pas regrouper les polices dans votre application, vous pouvez toujours consulter polices téléchargeables

3
Andrew Orobator