Na resposta a esta pergunta o utilizador lista valores para android:fontFamily
e 12 variantes (ver abaixo). De onde vêm estes valores? A documentação para android:fontFamily
não lista esta informação em nenhum lugar (ver aqui, e aqui). As cordas estão listadas no ficheiro styles.xml do Android em vários locais, mas como é que estes mapas voltam para a fonte Roboto?
De andróide 4.1 / 4.2, as seguintes famílias de fontes Roboto são disponível:
android:fontFamily="sans-serif" // roboto regular android:fontFamily="sans-serif-light" // roboto light android:fontFamily="sans-serif-condensed" // roboto condensed androide:fontFamily="sans-serif-thin" // roboto thin (androide 4.2) android:fontFamily="sans-serif-medium" // roboto medium (android 5.0)
em combinação com isto
android:textStyle="normal|bold|italic"
12 variantes são possíveis:
- Regular
- Itálico
- Negrito
- Bold-italic
- Luz
- Ligeiro-italício
- Fino
- Thin-italic
- Condensado regularmente
- Itálico condensado
- Condensado ousado
- Condensado bold-italic
No ficheiro styles.xml
da aplicação I'estou a trabalhar em alguém que listou isto como a família de fontes, e I'tenho quase a certeza de que'está errado:
<item name="android:fontFamily">Roboto-Regular.ttf</item>
I'gostaria de ter o tema da nossa aplicação correctamente configurado (o que inclui a utilização correcta da fontFamily) e remover toda a redundância que existe em alguns dos estilos que foram criados antes de eu dar uma vista de olhos ao ficheiro.
de onde vêm estes valores? A documentação para androide:fontFamily não lista esta informação em nenhum lugar
Estes não estão de facto listados na documentação. Mas são mencionados aqui sob a secção 'Famílias de fontes'. O documento lista todas as novas API públicas para o Android Jelly Bean 4.1.
No ficheiro styles.xml da aplicação I'estou a trabalhar em alguém que listou isto como a família de fontes, e I'tenho quase a certeza de que'está errado:
Sim, isso's errado. Se não't faz referência ao ficheiro da fonte, tem de usar o nome da fonte mencionado no documento acima. Neste caso, deveria ter sido este:
<item name="android:fontFamily">sans-serif</item>
Tal como a resposta ligada já referida, são possíveis 12 variantes:
Regular (por defeito):
<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">normal</item>
**Italic***:
<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">italic</item>
**Ordido***:
<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">bold</item>
**Bold-italic***:
<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">bold|italic</item>
**Luz***:
<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>
**Thin***:
<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>
**Condensado regularmente***:
<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">normal</item>
**Condensado em itálico***:
<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">italic</item>
**Condensado em negrito***:
<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">bold</item>
**Condensado parafuso-italic***:
<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">bold|italic</item>
**Medium***:
<item name="android:fontFamily">sans-serif-medium</item>
<item name="android:textStyle">normal</item>
**Medio-italic***:
<item name="android:fontFamily">sans-serif-medium</item>
<item name="android:textStyle">italic</item>
**Preto***:
<item name="android:fontFamily">sans-serif-black</item>
<item name="android:textStyle">italic</item>
Para referência rápida, é assim que todos eles se parecem:
[1
A página Material Design Typography tem demos para algumas destas fontes e sugestões sobre a escolha de fontes e estilos.
Para códigos de segurança: **fonts.xml
*** é a lista definitiva e em constante expansão de fontes Android.
Definir os atributos android:fontFamily
e android:textStyle
, por exemplo
<!-- Roboto Bold -->
<TextView
android:fontFamily="sans-serif"
android:textStyle="bold" />
aos valores desejados a partir desta tabela:
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 é uma fonte de recurso; pode't especificá-la directamente)
Nota: esta tabela é derivada de fonts.xml
. Cada fonte's nome de família e estilo é listado em fonts.xml, por exemplo
<family name="serif-monospace">
<font weight="400" style="normal">CutiveMono.ttf</font>
</family>
O "espaço de serif-monosfera" é assim a família de fontes, e o "normal" é o estilo.
Com base no [log][5] das fontes.xml e no anterior system_fonts.xml, é possível ver quando cada fonte foi adicionada:
Ice Cream Sandwich: Roboto regular, negrito, itálico, e negrito itálico
Jelly Bean: Roboto light, light italic, condensed, condensed bold, condensed italic, condensed bold italic, e condensed bold italic
Jelly Bean MR1: Roboto fino e fino itálico
Lollipop:
Oreo MR1: Meio condensado robotizado
[5]: https://android.googlesource.com/platform/frameworks/base/+ culpa/master/data/fonts/fonts.xml
Tanto quanto I'm saiba, pode't declarar fontes personalizadas em xml ou temas. Normalmente limito-me a fazer classes personalizadas que estendem a visualização de texto que definem a sua própria fonte na instanciação e utilizam-nas nos meus ficheiros xml de layout.
ou seja
public class Museo500TextView extends TextView {
public Museo500TextView(Context context, AttributeSet attrs) {
super(context, attrs);
this.setTypeface(Typeface.createFromAsset(context.getAssets(), "path/to/font.ttf"));
}
}
e
<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" />