1.添加库Calligraphy
dependencies {
compile 'uk.co.chrisjenx:calligraphy:2.2.0'
}
2.添加字体文件到assets/fonts/
路径
fonts/RobotoSlab-Thin.ttf
3.自定义Application,在onCreate里面配置默认字体
CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
.setDefaultFontPath("fonts/RobotoSlab-Thin.ttf")
.setFontAttrId(R.attr.fontPath)
.build()
);
4.自定义Activity基类BaseActivity,重写attachBaseContext
方法
在BaseActivity中重写
attachBaseContext
方法,使APP中的所有Activity继承自BaseActivity,字体会自动引入到APP全局。
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}
5.使用
5.1.直接引用
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
……
<TextView
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
fontPath="fonts/RobotoSlab-Thin.ttf"/>
5.2.在TextAppearance中定义字体样式
<style name="TextAppearance.FontPath" parent="android:TextAppearance">
<!-- Custom Attr-->
<item name="fontPath">fonts/RobotoSlab-Thin.ttf</item>
</style>
……
<TextView
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.FontPath"/>
5.3.在Styles中定义字体样式
<style name="TextViewCustomFont">
<item name="fontPath">fonts/RobotoSlab-Thin.ttf</item>
</style>
……
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
……
<TextView
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/TextViewCustomFont"/>
5.4.在Theme中定义字体样式
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
<item name="android:textViewStyle">@style/AppTheme.Widget.TextView</item>
</style>
<style name="AppTheme.Widget"/>
<style name="AppTheme.Widget.TextView" parent="android:Widget.Holo.Light.TextView">
<item name="fontPath">fonts/RobotoSlab-Thin.ttf</item>
</style>