Android 全局设置应用字体样式

1、首先拷贝自定义字体文件.ttf到assets/fonts下,然后在自定义Application中设置改变字体。(asserts类似于res资源文件夹,目录级别一致)

2、创建一个类用于检测并替换应用字体

public class FontsOverride {
    public static void setDefaultFont(Context context,
                                      String staticTypefaceFieldName, String fontAssetName) {
        final Typeface regular = Typeface.createFromAsset(context.getAssets(),
                fontAssetName);
        replaceFont(staticTypefaceFieldName, regular);
    }

    protected static void replaceFont(String staticTypefaceFieldName,
                                      final Typeface newTypeface) {
        try {
            final Field staticField = Typeface.class
                    .getDeclaredField(staticTypefaceFieldName);
            staticField.setAccessible(true);
            staticField.set(null, newTypeface);
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    }}
3、由于替换字体涉及整个应用的起始到结束

所以新建一个类继承Application,在onCreate(..)中调用写好的类FontsOverride的setDefaultFont方法

FontsOverride.setDefaultFont(this, "MONOSPACE", "fonts/SIMYOU.TTF");
现在介绍setDefaultFont方法参数,第一个上下文对象就熟悉了,第二个参数涉及到控件就会有一个属性android:typeface,设置字体的话
Android系统默认支持三种字体,分别为:sans, serif, monospace"
只要你为你要设置字体样式的控件设置android:typeface="monospace"这一属性,这时一旦检测到控件有这一属性,那么该控件的字体样式就会被替换成"第三个参数"字体文件样式;

注意:android:typeface这一属性不仅只针对可以设置文本android:text的控件,listview等一系列控件都可以;

总结:其中的内容也有参考一些博文,如果有更优或者该方法有问题请提示你的宝贵意见大笑

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值