Android 修改字体

版权声明:本文为 宇不语 原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35064774/article/details/52950652


如有转载,请申明:
转载至 http://blog.csdn.net/qq_35064774/article/details/52950652


TextView修改字体

Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/ping_fang_light.ttf");
tvName.setTypeface(typeface);

全局修改字体

  • 首先需要自定义一个Application子类,在应用创建之后,就利用反射修改样式字段设置字体。
    import java.lang.reflect.Field;
    import android.app.Application;
    import android.graphics.Typeface;

    public class TypefaceApplication extends Application{
        public static Typeface typeFace;
        @Override
        public void onCreate() {
            super.onCreate();
            setTypeface();
        }
        public void setTypeface(){
            // 加载外部字体assets/fonts/ping_fang_light.ttf
            typeFace = Typeface.createFromAsset(getAssets(), "fonts/ping_fang_light.ttf");
            try {
                //与values/styles.xml中的<item name="android:typeface">sans</item>对应
                Field field = Typeface.class.getDeclaredField("SANS_SERIF");
                field.setAccessible(true);
                field.set(null, typeFace);
            } catch (NoSuchFieldException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }    
        }
    }
    
  • 然后打开values/styles.xml,在AppTheme中增加一个item
    sans

  • 比如,我的代码是这样的

    @color/colorPrimary
    @color/colorPrimaryDark
    @color/colorAccent

    sans

  • 然后把自定义的TypefaceApplication配置到AndroidManifest.xml中去。在application标签内增加如下属性。
    android:name=”.TypefaceApplication”

猜你喜欢

转载自blog.csdn.net/qq_35064774/article/details/52950652