Android アプリケーションで Roboto フォントを使用し、フォントがインストールされていない以前のバージョンの Android でも動作するようにしたいと考えています。Typeface.createFromAsset() を使用して、TextViews/Buttons/Other-Objects ごとにフォントを手動で設定することで、これが実現できることはわかっています。ただし、画面に表示するすべてのオブジェクトに対してこれを行うのは、非常に面倒なようです。
私の質問は、これを行うより良い方法はあるでしょうか? ヘルパー クラス、または .xml テーマ ファイルでカスタム フォントを設定する方法などでしょうか? 各画面のすべてのオブジェクトを手動でリストしてフォントを変更するよりも、自動化されたもののほうがよいでしょう。
ありがとう!
ベストアンサー1
上記の受け入れられた回答は正しいですが、ここでは私の実装を提供したかっただけです
私のユーティリティクラス:
package com.example.utils;
import android.content.Context;
import android.graphics.Typeface;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class AndroidUtils
{
private static Typeface robotoTypeFace;
public static void setRobotoFont (Context context, View view)
{
if (robotoTypeFace == null)
{
robotoTypeFace = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto/Roboto-Regular.ttf");
}
setFont(view, robotoTypeFace);
}
private static void setFont (View view, Typeface robotoTypeFace)
{
if (view instanceof ViewGroup)
{
for (int i = 0; i < ((ViewGroup)view).getChildCount(); i++)
{
setFont(((ViewGroup)view).getChildAt(i), robotoTypeFace);
}
}
else if (view instanceof TextView)
{
((TextView) view).setTypeface(robotoTypeFace);
}
}
}
this
アクティビティを想定して、これをどのように使用するか:
AndroidUtils.setRobotoFont(this, view);
すべての TextView に同じフォントを設定するには、アクティビティの decorView を使用します。
ViewGroup godfatherView = (ViewGroup)this.getWindow().getDecorView();
AndroidUtils.setRobotoFont(this, godfatherView);
アダプタやフラグメントがある場合は、それらのフォントも設定することを忘れないでください。
見るここまた。