Andoroidアプリでカスタムフォントを使う場合、以下の様な方法があります。
カスタムフォントの設定方法
「app\src\main」配下に「assets」フォルダを作成します。
その中に使用したいフォントを配置します。
フリーの日本語フォントは日本語のフリーフォント219種類のまとめにたくさんありますので好きなのを取得してください。
あとはonCreate等で下記のようにフォントを設定してあげればカスタムフォントが使えます。
1 2 |
TextView mTitle = (TextView) findViewById(R.id.title); mTitle.setTypeface(Typeface.createFromAsset(getAssets(), "font_1_kokugl_1.15_rls.ttf")); |
TextViewやButtonなどはこの方法でカスタムフォントを設定できるのですがAlertDialogのタイトルやOKボタンには適用できません。(多分)
そこで以下の様な方法をとります。
まずはFontsOverrideクラスを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
public final class FontsOverride { public static void setDefaultFont(Context context, String staticTypefaceFieldName, String fontAssetName) { final Typeface regular = Typeface.createFromAsset(context.getAssets(), fontAssetName); replaceFont(staticTypefaceFieldName, regular); } protected static void replaceFont(String staticTypefaceFieldName, final Typeface newTypeface) { try { final Field staticField = Typeface.class .getDeclaredField(staticTypefaceFieldName); staticField.setAccessible(true); staticField.set(null, newTypeface); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } } |
そしてonCreateで以下の様に書きます。
1 2 3 4 |
FontsOverride.setDefaultFont(this, "DEFAULT", "font_1_kokugl_1.15_rls.ttf"); FontsOverride.setDefaultFont(this, "MONOSPACE", "font_1_kokugl_1.15_rls.ttf"); FontsOverride.setDefaultFont(this, "SERIF", "font_1_kokugl_1.15_rls.ttf"); FontsOverride.setDefaultFont(this, "SANS_SERIF", "font_1_kokugl_1.15_rls.ttf"); |
これでAlertDialogのタイトルやOKボタンがカスタムフォントになったと思います。
ならない場合はstyles.xmlを次のようにしてみてください。
1 2 3 4 5 6 7 8 9 10 11 12 |
<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="android:typeface">monospace</item> </style> </resources> |
デフォルトtypefaceにmonospaceを設定します。
アクションバーのタイトルのフォントは変更できないと思いつつ、一度画面を傾けて横画面モードにすると反映されますね。Androidのバグかな。
スポンサーサイト
アフィリエイトはエーハチネット
ドメイン取るならお名前.com