android全局修改字体

解决方案:

添加字体(.otf)到工程目录assets下, 我的是在assets在新建了一个fonts包.

public class FontsUtils {

    /**
     * 设置自定义字体
     *
     * @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();
        }
    }
}

 

在Application里面如下写

@Override
public void onCreate() {
    super.onCreate();
    _application = this;
    ShenContext.set(this);
    FontsUtils.setDefaultFont(this, "SANS_SERIF", "fonts/ziti.otf");

}

 

在style文件

  <style name="AppCompatNotitleTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowFullscreen">true</item>
<!--        <item name="android:fontFamily">@font/ziti</item>-->
        <item name="android:typeface">sans</item>
    </style>

AndroidManifest.xml

<application
    android:theme="@style/AppCompatNotitleTheme"

 

 

 

 

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页