android修改应用字体

在有些需求里面需要修改默认的字体,可以直接在Application里面写如下代码

FontsOverride.setDefaultFont(this, "DEFAULT", "fonts/xxx.ttf");//修改系统字体
FontsOverride.setDefaultFont(this, "MONOSPACE", "fonts/yyy.ttf");

FontsOverride类如下

public final 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();
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,270评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,359评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,917评论 18 399
  • 盛夏,早晨的阳光也是如此炙热。 正逢集日,我们母女三人各有事务,便出发去镇上了。我得去拍寸照,复印身份证件;妈妈要...
    春天的野林子阅读 6,430评论 3 1
  • 二十三点,小巴缓缓停下。 夜色中,路边的灯红酒绿,一如我的心情,看似璀璨。 上了车,习惯的找个后排靠后的无人座。 ...
    汤姆福特阅读 1,001评论 4 0