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等一系列控件都可以;
总结:其中的内容也有参考一些博文,如果有更优或者该方法有问题请提示你的宝贵意见