在 Typeface 中,是有一些被标记为 static final 的默认字体,因为上一步的 Theme 中,就是设置的 serif ,所以我们这里替换它就好了。
完整的方法非常的简单,就是通过反射拿到 Typeface.SERIF,然后使用反射将它修改成我们需要的字体即可。
private final static String CUSTOM_FONT = "fonts/custom_font.ttf";
public static void changeDefaultFont(Context ctx){
try{
Typeface typeface = Typeface.createFromAsset(cts.getAssets(), CUSTOM_FONT);
Field defaultField = Typeface.class.getDeclaredField("SERIF");
defaultField.setAccessible(true);
defaultField.set(null, typeface);
}catch(Exception e){
e.printStackTrace();
}
}