我想知道是否有一种方法可以一次性更改 android 应用程序中所有文本视图的字体?所有文本视图是指以编程方式或动态创建的文本视图以及使用 XML 布局文件(拖放)单独创建的文本视图?
我知道我可以创建一个具有不同所需字体的新主题并使用它。但我只能看到主题适用于程序中动态创建的文本视图,而不适用于 XML 布局中的。
您能否让我知道是否有任何解决方案,或者唯一的选择是手动更改每个文本视图的字体。
我想知道是否有一种方法可以一次性更改 android 应用程序中所有文本视图的字体?所有文本视图是指以编程方式或动态创建的文本视图以及使用 XML 布局文件(拖放)单独创建的文本视图?
我知道我可以创建一个具有不同所需字体的新主题并使用它。但我只能看到主题适用于程序中动态创建的文本视图,而不适用于 XML 布局中的。
您能否让我知道是否有任何解决方案,或者唯一的选择是手动更改每个文本视图的字体。
最简单的方法是扩展 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
属性。看看这个,看看有用的解释。