android:fontFamily的有效值及其映射到的内容?
在这个问题的答案中,用户列出了android:fontFamily
和12个变体的值(见下文)。 这些价值从何而来? android:fontFamily
的文档没有在任何地方列出这些信息(我在这里和这里查过)。 这些字符串在各个位置的Android styles.xml文件中列出,但是这些字符串又如何映射回Roboto字体?
从android 4.1 / 4.2开始,可以使用以下Roboto字体系列:
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)
与此相结合
android:textStyle="normal|bold|italic"
可能有12种变体:
在应用程序中的styles.xml
文件中,我正在将某人列为字体系列,我很确定它是错误的:
<item name="android:fontFamily">Roboto-Regular.ttf</item>
我想为我们的应用设置正确的主题(包括正确使用fontFamily),并删除在查看文件之前创建的某些样式中的所有冗余。
这些价值从何而来? android:fontFamily的文档不会在任何地方列出这些信息
这些确实没有在文档中列出。 但他们在“字体家族”一节中提到。 该文档列出了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>
为了快速参考,这是他们所有的样子:
可用字体(来自奥利奥)
材料设计印刷术页面有一些这些字体的演示和关于选择字体和样式的建议。
对于代码侦查: 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和之前的system_fonts.xml的日志,可以看到每个字体何时添加:
据我所知,你不能在xml或主题中声明自定义字体。 我通常只是制作扩展textview的自定义类,在实例化上设置自己的字体,并在我的布局xml文件中使用它们。
即:
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" />
链接地址: http://www.djcxy.com/p/24607.html
上一篇: Valid values for android:fontFamily and what they map to?