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.
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:
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>
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:
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.
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.
Basé sur le journal de fonts.xml et l'ancien system_fonts.xml , vous pouvez voir quand chaque police a été ajoutée:
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" />