andorid 修改字体

作者: AntDream | 来源:发表于2019-06-24 20:00 被阅读7次

    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点

    替换字体也是一个比较常见的需求,一般分几种情况。实现起来也不麻烦,这里简单记录下

    全局替换字体

    步骤1

    assets目录下拷贝字体文件

    步骤2

    application中替换默认字体

    在Application的onCreate方法中增加替换方法

    /**
     * 设置自定义字体
     *
     * @param context
     * @param staticTypefaceFieldName 需要替换的系统字体样式
     * @param fontAssetName           替换后的字体样式
     */
    public static void setDefaultFont(Context context, String staticTypefaceFieldName, String fontAssetName) {
        // 根据路径得到Typeface
        Typeface regular = Typeface.createFromAsset(context.getAssets(), fontAssetName);
        // 设置全局字体样式
        replaceFont(staticTypefaceFieldName, regular);
    }
    
    private 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:新增主题Theme,并在AndroidManifest文件中注册

    新增主题

    <style name="YourTheme" parent="AppTheme.Base">
        <item name="android:typeface" >serif</item>
    </style>
    
    

    在AndroidManifest.xml文件中设置主题

    <application xmlns:tools="http://schemas.android.com/tools"
        ...
        android:theme="@style/YourTheme"
        tools:replace="android:theme">
        ...
    </application>
    
    

    替换某些布局中的字体,也就是局部替换

    步骤1:在res目录下新建font目录,拷贝字体文件

    步骤2: 代码中替换

    TextView textView = (TextView) findViewById(R.id.textView_font);
    Typeface typeface = ResourcesCompat.getFont(this, R.font.myfont);
    textView.setTypeface(typeface);
    

                           欢迎关注我的微信公众号,和我一起每天进步一点点!
    
    AntDream

    相关文章

      网友评论

        本文标题:andorid 修改字体

        本文链接:https://www.haomeiwen.com/subject/iyumqctx.html