1.Android 系统提供字体
android:typeface="serif"
android:textStyle="bold"
android:fontFamily="sans-serif"
2.Android 替换TextView字体
Typeface typeface = Typeface.createFromAsset(context.getAssets(), "fonts/Avenir Next.ttc"); new TextView(this).setTypeface(typeface);
3.Android 替换全局字体
(1).设置主题中默认使用字体
<item name="android:typeface">serif</item>
(2).在Application 中初始化如下方法
使用反射机制获取第一步中设置默认字体,并使用自定义字体Exo2-Black.ttf 替换
private void initTypeface(){ try { Field field = Typeface.class.getDeclaredField("SERIF"); field.setAccessible(true); field.set(null, Typeface.createFromAsset(getAssets(), "fonts/Exo2-Black.ttf")); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } }
另外,还有一种方法可实现字体替换:
获取activity的整个view,通过view.getChild 循环递归 给获取到的 view 设置字体,因性能问题不建议使用