web-dev-qa-db-fra.com

Valeurs valides pour Android: fontFamily et à quoi correspondent-elles?

Dans la réponse à cette question , l'utilisateur répertorie les valeurs de Android:fontFamily et de 12 variantes (voir ci-dessous). D'où viennent ces valeurs? La documentation de Android:fontFamily ne répertorie ces informations à aucun endroit (j'ai vérifié ici , et ici ). Les chaînes sont répertoriées dans le fichier Android styles.xml à divers endroits, mais comment peuvent-elles correspondre à la police Roboto?

À partir de Android 4.1/4.2, les familles de polices Roboto suivantes sont disponibles:

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

en combinaison avec cela

Android:textStyle="normal|bold|italic" 

12 variantes sont possibles:

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

Dans le fichier styles.xml de l'application, je travaille sur une personne qui l'a répertoriée comme étant la famille de polices, et je suis à peu près sûre que c'est faux:

<item name="Android:fontFamily">Roboto-Regular.ttf</item>

J'aimerais que le thème de notre application soit correctement configuré (ce qui inclut l'utilisation correcte de fontFamily) et supprime toute la redondance qui existe dans certains des styles créés avant que j'aie jeté un coup d'œil au fichier.

253
Christopher Perry

D'où viennent ces valeurs? La documentation pour Android: fontFamily ne répertorie pas ces informations dans aucun endroit

Celles-ci ne sont en effet pas répertoriées dans la documentation. Mais ils sont mentionnés ici dans la section "Familles de polices". Le document répertorie chaque nouvelle API publique pour Android Jelly Bean 4.1.

Dans le fichier styles.xml de l'application, je travaille sur quelqu'un qui a répertorié cette famille dans la famille de polices, et je suis sûr que ce n'est pas le cas:

Oui c'est faux. Vous ne faites pas référence au fichier de police, vous devez utiliser le nom de police mentionné dans le document lié ci-dessus. Dans ce cas, cela aurait dû être ceci:

<item name="Android:fontFamily">sans-serif</item>

Comme la réponse liée déjà indiquée, 12 variantes sont possibles:

Ajouté dans Android Jelly Bean (4.1) - API 16:

Normal (par défaut):

<item name="Android:fontFamily">sans-serif</item>
<item name="Android:textStyle">normal</item> 

Italique :

<item name="Android:fontFamily">sans-serif</item>
<item name="Android:textStyle">italic</item>

Gras :

<item name="Android:fontFamily">sans-serif</item>
<item name="Android:textStyle">bold</item>

Gras-italique :

<item name="Android:fontFamily">sans-serif</item>
<item name="Android:textStyle">bold|italic</item>

Lumière :

<item name="Android:fontFamily">sans-serif-light</item>
<item name="Android:textStyle">normal</item>

Light-italic :

<item name="Android:fontFamily">sans-serif-light</item>
<item name="Android:textStyle">italic</item>

Mince :

<item name="Android:fontFamily">sans-serif-thin</item>
<item name="Android:textStyle">normal</item>

Thin-italic :

<item name="Android:fontFamily">sans-serif-thin</item>
<item name="Android:textStyle">italic</item>

Régulier régulier :

<item name="Android:fontFamily">sans-serif-condensed</item>
<item name="Android:textStyle">normal</item>

Italique condensé :

<item name="Android:fontFamily">sans-serif-condensed</item>
<item name="Android:textStyle">italic</item>

Gras condensé :

<item name="Android:fontFamily">sans-serif-condensed</item>
<item name="Android:textStyle">bold</item>

condensé gras-italique :

<item name="Android:fontFamily">sans-serif-condensed</item>
<item name="Android:textStyle">bold|italic</item>

Ajouté dans Android Lollipop (v5.0) - API 21:

Moyen :

<item name="Android:fontFamily">sans-serif-medium</item>
<item name="Android:textStyle">normal</item>

moyen-italique :

<item name="Android:fontFamily">sans-serif-medium</item>
<item name="Android:textStyle">italic</item>

Noir :

<item name="Android:fontFamily">sans-serif-black</item>
<item name="Android:textStyle">italic</item>

Pour référence rapide, voici à quoi ils ressemblent tous:

341
Ahmad

Polices disponibles (à partir de Oreo)

Preview of all fonts

La page Material Design Typography contient des démonstrations de certaines de ces polices et des suggestions sur le choix des polices et des styles.

Pour les détecteurs de code: fonts.xml est la liste définitive et toujours croissante de Android polices.


Utiliser ces polices

Définissez les attributs _Android:fontFamily_ et _Android:textStyle_, par exemple.

_<!-- Roboto Bold -->
<TextView
    Android:fontFamily="sans-serif"
    Android:textStyle="bold" />
_

aux valeurs souhaitées de cette table:

_Font                     | Android:fontFamily          | Android:textStyle
-------------------------|-----------------------------|-------------------
Roboto Thin              | sans-serif-thin             |
Roboto Light             | sans-serif-light            |
Roboto Regular           | sans-serif                  |
Roboto Bold              | sans-serif                  | bold
Roboto Medium            | sans-serif-medium           |
Roboto Black             | sans-serif-black            |
Roboto Condensed Light   | sans-serif-condensed-light  |
Roboto Condensed Regular | sans-serif-condensed        |
Roboto Condensed Medium  | sans-serif-condensed-medium |
Roboto Condensed Bold    | sans-serif-condensed        | bold
Noto Serif               | serif                       |
Noto Serif Bold          | serif                       | bold
Droid Sans Mono          | monospace                   |
Cutive Mono              | serif-monospace             |
Coming Soon              | casual                      |
Dancing Script           | cursive                     |
Dancing Script Bold      | cursive                     | bold
Carrois Gothic SC        | sans-serif-smallcaps        |
_

(Noto Sans est une police de secours; vous ne pouvez pas le spécifier directement)

Remarque: cette table est dérivée de fonts.xml . Le nom de famille et le style de chaque police sont répertoriés dans fonts.xml, par exemple.

_<family name="serif-monospace">
    <font weight="400" style="normal">CutiveMono.ttf</font>
</family>
_

_serif-monospace_ est donc la famille de polices et normal est le style.


Compatibilité

Basé sur le journal de fonts.xml et l'ancien system_fonts.xml , vous pouvez voir quand chaque police a été ajoutée:

  • Sandwich à la crème glacée: Roboto Regular, gras, italique et gras italique
  • Jelly Bean: Roboto léger, italique léger, condensé, gras condensé, italique condensé et gras italique condensé
  • Jelly Bean MR1: Roboto mince et mince italique
  • Sucette:
    • Roboto moyen, moyen italique, noir et noir italique
    • Noto Serif regular, gras, italique, gras italique
    • Cutive Mono
    • Bientôt disponible
    • Script de danse
    • Carrois Gothic SC
    • Noto Sans
  • Oreo MR1: milieu condensé de Roboto
98
Newtonx

Autant que je sache, vous ne pouvez pas déclarer de polices personnalisées au format XML ou thèmes. Habituellement, je crée simplement des classes personnalisant l'extension textview qui définissent leur propre police lors de l'instanciation et les utilisent dans mes fichiers XML de mise en page.

c'est à dire:

public class Museo500TextView extends TextView {
    public Museo500TextView(Context context, AttributeSet attrs) {
        super(context, attrs);      
        this.setTypeface(Typeface.createFromAsset(context.getAssets(), "path/to/font.ttf"));
    }
}

et

<my.package.views.Museo900TextView
        Android:id="@+id/dialog_error_text_header"
        Android:layout_width="190dp"
        Android:layout_height="wrap_content"
        Android:gravity="center_horizontal"
        Android:textSize="12sp" />
9
trippedout