Android全局使用自定义字体

项目需求使用微软雅黑作为全局字体,一个个改太麻烦了。找了很多中文材料,发现都是一篇,最后还是求助stackoverflow。

解决办法参考自http://stackoverflow.com/a/16883281,简单来说就是利用映射更改默认字体。


目标:使用微软雅黑字体作为全局字体。

1. 首先下载自定义字体,拷贝到工程中的assets文件夹下,建个新文件夹也可以,我的做法如下图:




2. 创建一个继承自Application的类,放上TypeFace的变量。

public static Typeface TypeFaceYaHei;



3. 在这个类的初始化里对其赋值,注意字体文件路径要写对。

TypeFaceYaHei = Typeface.createFromAsset(getAssets(), "fonts/YaHei.ttf");



4. 关键的地方来了,我将系统的serif的字体替换成微软雅黑

try
{
	Field field = Typeface.class.getDeclaredField("SERIF");
	field.setAccessible(true);
	field.set(null, TypeFaceYaHei);
}
catch (NoSuchFieldException e)
{
	e.printStackTrace();
}
catch (IllegalAccessException e)
{
	e.printStackTrace();
}


5. 然后在res/values/styles.xml中修改应用主题的文字为serif






6. 最后在AndroidManifest.xml中使用继承的类和自定义的主题


亲测可行!

你可能感兴趣的:(Android)