为了应对不同风的品牌,需要配置不同的字体
一、自定义字体
1.android Typeface使用TTF字体文件设置字体
我们可以在程序中放入ttf字体文件,在程序中使用Typeface设置字体。
第一步,在assets目录下新建fonts目录,把ttf字体文件放到这。
第二步,程序中调用:
AssetManager mgr=getAssets();//得到AssetManager
Typeface tf=Typeface.createFromAsset(mgr, "fonts/ttf.ttf");//根据路径得到Typeface
tv=findViewById(R.id.textview);
tv.setTypeface(tf);//设置字体
二、android自带的设置
在xml文件中使用
android:textStyle=”bold”
可以将英文设置成粗体, 但是不能将中文设置成粗体,
将中文设置成粗体的方法是: 注意:部分字体中文无效,虽然不会报错,但是对中文无效。
TextView tv = (TextView)findViewById(R.id.TextView01);
tv.getPaint().setFakeBoldText(true);//中文仿“粗体”--使用TextPaint的仿“粗体”设置setFakeBoldText为true。
三、
哪些属性可以影响字体
android:textStyle:
textStyle 主要用于设定一些字体的样式,它是对所有的字体都生效的。也就是说哪怕你替换了字体,依然可以使用 textStyle 来修饰它的样式。textStyle 本身支持的可选项有 normal|bold|italic,它们也非常的好理解,就是普通|粗体|斜体。
字体是不受 textStyle 影响的,这里影响的只有它的样式。
android:typeface
typeface 可以用于设置一些默认的字体,它可选的属性有 normal|sans|serif|monospace 等。normal 和 sans 的字体其实是一样的,serif 是一个带衬线的字体,而 nonospace 是等宽字体。
衬线其实就是字体边缘的那一点点小啾啾。
android:fontFamily
fontFamily 看着像是对 typeface 的一次加强,从它的可选项就能看出来,它更细致的区分了字体的样式。
fontFamily 的可选项还是很多的,这里就不一一列举了。不过需要注意,有一些字体的设置是有版本限制的。
例如:sans-serif-medium 是需要 Android 5.0 的版本才支持的。
需要注意的是,如果同时配置了 typeface 和 fontFamily ,将使用 fontFamily 配置的字体。(代码中可以看到相关逻辑)
而除了 typeface 和 fontFamily 会有冲突之外,它们俩都是可以配合 typeStyle 属性一起使用的,也就是说,这里配置的字体,都是可以再加粗或者加斜体。
修改字体的方式
如果你能说服你的设计师,接受系统字体的话,你可以在 Theme 中,去配置你需要的默认字体。
在 application 中,通过 android:theme 来配置一个 App 的主题。一般新创建的项目,都是 @style/AppTheme 。在其中追加关于字体的属性 android:fontFamily,它就可以完成对全局设置一个系统字体。当然你可以对一个单独的 TextView 配置一个特别的字体,都是可以接受的。
三、
RoBoto
Android4.0后默认字体就使用了Roboto
相关表可以看这里
四、明白了如何设置,那应该设置啥呢
UI设计师给的字体方案 与代码设置之间是有差异的。她所规定的字体可能需要改多个属性。
具体到时候再分析吧
相关主题的,这个不错呀,有图文很详细,一目了然
Android 字体修改,所有的细节都在这里 | 开篇