在Android Studio中为APP设置全局字体

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>
I Don't Want Your Money, I Want Aragaki Yui.