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 回答