0

Androidアプリケーションのすべてのテキストビューのフォントを一度に変更する方法があるのだろうか? すべてのテキスト ビューとは、プログラムまたは動的に作成されたテキスト ビューと、XML レイアウト ファイル (ドラッグ アンド ドロップ) を使用して個別に作成されたテキスト ビューを意味しますか?

必要なフォントが異なる新しいテーマを作成して使用できることを知っています。しかし、テーマがプログラム内で動的に作成されたテキストビューに適用されることしかわかりませんが、XML レイアウトのテーマは適用されません。

これに対する解決策があるかどうか、または各テキスト ビューのフォントを手動で変更するしかないかどうかを教えてください。

4

1 に答える 1

2

最も簡単な方法は、TextView ウィジェットを拡張することです。

public class FontTextView extends TextView {

private String mTypefacePath;

public FontTextView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    setAttrs(context, attrs, defStyle);
    init(context);
}

public FontTextView(Context context, AttributeSet attrs) {
    super(context, attrs);
    setAttrs(context, attrs, 0);
    init(context);
}

public FontTextView(Context context) {
    super(context);
    init(context);
}

private void setAttrs(Context context, AttributeSet attrs, int defStyle) {
    if (isInEditMode())
        return;
    TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.FontTextView, defStyle, 0);
    mTypefacePath = a.getString(R.styleable.FontTextView_typeface);
    a.recycle();
}

private void init(Context context) {
    if (!TextUtils.isEmpty(mTypefacePath)) {
        try {
            setTypeface(Typeface.createFromAsset(context.getAssets(),
                    mTypefacePath));
        } catch (Exception ex) {
            // could not create the typeface from path
        }
    } 
}}

typefaceまた、属性を定義する必要があります。これを見て、有用な説明を確認してください。

于 2013-10-31T08:51:51.557 に答える