Android全局使用自定义字体
2014-12-02 11:46
447 查看
项目需求使用微软雅黑作为全局字体,一个个改太麻烦了。找了很多中文材料,发现都是一篇,最后还是求助stackoverflow。
解决办法参考自http://stackoverflow.com/a/16883281,简单来说就是利用映射更改默认字体。
目标:使用微软雅黑字体作为全局字体。
1. 首先下载自定义字体,拷贝到工程中的assets文件夹下,建个新文件夹也可以,我的做法如下图:
2. 创建一个继承自Application的类,放上TypeFace的变量。
3. 在这个类的初始化里对其赋值,注意字体文件路径要写对。
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">
亲测可行!
解决办法参考自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">
亲测可行!
相关文章推荐
- (转)Android教程之如何使用自定义字体
- Android教程之如何使用自定义字体
- Android教程之如何使用自定义字体
- android 自定义字体 字体库 字体格式 使用攻略
- Android中使用自定义的字体
- 在android应用使用自定义的字体显示文字
- Android 中使用自定义字体的方法
- Android教程之如何使用自定义字体
- Delphi XE5开发Android程序使用自定义字体文件.
- Android 中使用自定义字体的方法
- Android中使用自定义的字体
- Android教程之如何使用自定义字体
- android的widget中使用自定义的字体TTF~
- Android教程之如何使用自定义字体
- 在ANDROID中使用自定义字体
- Android 中使用自定义字体的方法
- Android 中使用自定义字体的方法
- android开发之修改全局自定义字体
- Android 中使用自定义字体的方法
- Android 中使用自定义字体的方法