[Android] Calligraphyを使ってカスタムフォントを適用する

Androidアプリのフォントを変更したい時があります。そんな時はCalligraphyというライブラリを使うと便利です。Calligraphyはデフォルトのフォントを変更してくれるので、Viewにいちいちフォントを当てたりカスタムViewを作ったりといった作業が不要になります。

Calligraphyを使うには、まずはapp/build.gradleにCalligraphyを追加してSyncします。これでプロジェクトにCalligraphyが追加されました。

フォントファイル(.ttfなど)はassetsフォルダーに格納します。Android Studioで右クリック > New > Folder > Assets Folderと辿ってassetsフォルダーを作成すればOKです。この中にフォントファイルを格納します。

assetsディレクトリの追加

次にApplicationクラスなどでCalligraphyの初期設定を行います。setDefaultFontPathではassetsフォルダーに格納したフォントファイルを指定します。

CalligraphyConfig.initDefault(CalligraphyConfig.Builder()
        .setDefaultFontPath("yourfontfile.ttf")
        .setFontAttrId(R.attr.fontPath)
        .build())

最後にattachBaseContextのなかでContextをCalligraphyContextWrapperでラップしてあげればOKです。

override fun attachBaseContext(newBase: Context?) {
    super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase))
}

以上で、Activityにカスタムフォントを適用することができました。