您的位置:首页 > 移动开发 > Android开发

Android全局使用自定义字体

2014-12-02 11:46 447 查看
项目需求使用微软雅黑作为全局字体,一个个改太麻烦了。找了很多中文材料,发现都是一篇,最后还是求助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

<style name="AppBaseTheme" parent="Theme.AppCompat.Light">
<!--
Theme customizations available in newer API levels can go in
res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.
-->
</style>

<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<span style="white-space:pre"> </span><item name="android:typeface">serif</item>
</style>

6. 最后在AndroidManifest.xml中使用继承的类和自定义的主题
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:name="classes.MyApplication"
android:theme="@style/AppTheme">

亲测可行!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: