在对 this question 的回答中,用户列出了 android:fontFamily
和 12 个变体的值(见下文)。这些价值观从何而来? android:fontFamily
的文档没有在任何地方列出此信息(我检查了 here 和 here)。这些字符串列在 Android styles.xml 文件的各个位置,但这些字符串如何映射回 Roboto 字体?
从 android 4.1 / 4.2 开始,以下 Roboto 字体系列可用: android:fontFamily="sans-serif" // 机器人常规 android:fontFamily="sans-serif-light" // 机器人灯 android:fontFamily="sans-serif -condensed" // 精简机器人 android:fontFamily="sans-serif-thin" // 瘦机器人 (android 4.2) android:fontFamily="sans-serif-medium" // 结合这个机器人的机器人中型 (android 5.0) :textStyle="normal|bold|italic" 有 12 种可能的变体: 常规斜体 粗体 粗体-斜体 轻细斜体 细细 斜体 简体常规 简体斜体 简体粗体 简体粗体-斜体
在我正在处理的应用程序的 styles.xml
文件中,有人将此列为字体系列,我很确定这是错误的:
<item name="android:fontFamily">Roboto-Regular.ttf</item>
我想正确设置我们应用程序的主题(包括正确使用 fontFamily),并删除在查看文件之前创建的某些样式中的所有冗余。
这些价值观从何而来? android:fontFamily 的文档没有在任何地方列出此信息
这些确实没有在文档中列出。但在“字体系列”部分中提到了 here。该文档列出了适用于 Android Jelly Bean 4.1 的每个新公共 API。
在我正在研究的应用程序的styles.xml文件中,有人将其列为字体系列,我很确定这是错误的:
是的,这是错误的。您不引用字体文件,您必须使用上面链接文档中提到的字体名称。在这种情况下,它应该是这样的:
<item name="android:fontFamily">sans-serif</item>
就像已经说明的链接答案一样,可能有 12 种变体:
在 Android Jelly Bean (4.1) - API 16 中添加:
常规(默认):
<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">normal</item>
斜体:
<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">italic</item>
大胆的:
<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">bold</item>
加粗斜体:
<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">bold|italic</item>
光:
<item name="android:fontFamily">sans-serif-light</item>
<item name="android:textStyle">normal</item>
浅斜体:
<item name="android:fontFamily">sans-serif-light</item>
<item name="android:textStyle">italic</item>
薄的 :
<item name="android:fontFamily">sans-serif-thin</item>
<item name="android:textStyle">normal</item>
细斜体:
<item name="android:fontFamily">sans-serif-thin</item>
<item name="android:textStyle">italic</item>
浓缩正则:
<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">normal</item>
浓缩斜体:
<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">italic</item>
浓缩粗体:
<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">bold</item>
浓缩粗斜体:
<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">bold|italic</item>
在 Android Lollipop (v5.0) - API 21 中添加:
中等的:
<item name="android:fontFamily">sans-serif-medium</item>
<item name="android:textStyle">normal</item>
中斜体:
<item name="android:fontFamily">sans-serif-medium</item>
<item name="android:textStyle">italic</item>
黑色的:
<item name="android:fontFamily">sans-serif-black</item>
<item name="android:textStyle">italic</item>
为了快速参考,它们都是这样的:
https://developer.android.com/design/media/typography_variants@2x.png
可用字体(截至奥利奥)
https://i.stack.imgur.com/MM70p.png
Material Design Typography 页面包含其中一些字体的演示以及有关选择字体和样式的建议。
对于代码侦探:fonts.xml
是最终且不断扩展的 Android 字体列表。
使用这些字体
设置 android:fontFamily
和 android:textStyle
属性,例如
<!-- Roboto Bold -->
<TextView
android:fontFamily="sans-serif"
android:textStyle="bold" />
到此表中的所需值:
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 是一种备用字体;您不能直接指定它)
注意:此表派生自 fonts.xml
。每个字体的系列名称和样式都列在 fonts.xml 中,例如
<family name="serif-monospace">
<font weight="400" style="normal">CutiveMono.ttf</font>
</family>
因此,serif-monospace
是字体系列,normal
是样式。
兼容性
根据 fonts.xml 的 log 和之前的 system_fonts.xml,您可以看到添加每种字体的时间:
冰淇淋三明治:Roboto 常规、粗体、斜体和粗斜体
Jelly Bean:Roboto light、light italic、condensed、condensed bold、condensed italic 和 condensed bold italic
Jelly Bean MR1:Roboto瘦瘦斜体
Lollipop:Roboto 中等、中等斜体、黑色和黑色斜体 Noto Serif 常规、粗体、斜体、粗体斜体 Cutive Mono Coming Soon Dancing Script Carrois Gothic SC Noto Sans
Roboto 中、中斜体、黑色和黑色斜体
Noto Serif 常规、粗体、斜体、粗斜体
可爱的单声道
快来了
舞蹈剧本
Carrois 哥特式 SC
诺托桑斯
Oreo MR1:Roboto浓缩介质
据我所知,您不能在 xml 或主题中声明自定义字体。我通常只是制作扩展 textview 的自定义类,在实例化时设置自己的字体并在我的布局 xml 文件中使用它们。
IE:
public class Museo500TextView extends TextView {
public Museo500TextView(Context context, AttributeSet attrs) {
super(context, attrs);
this.setTypeface(Typeface.createFromAsset(context.getAssets(), "path/to/font.ttf"));
}
}
和
<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" />
不定期副业成功案例分享