我有一个ttf文件,理论上可行,但我不打算触摸500多行代码来以编程方式更改它。什么是最简单的方法?
答案 0 :(得分:3)
我自己处理过这个问题;虽然我无法在全球范围内设置自定义字体,但我能够让它更容易处理。
所以在我的Constants类(C.java)中我有一个Inner类:
public static final class TYPEFACE {
public static final Typeface Helvetica(Context ctx){
Typeface typeface = Typeface.createFromAsset(ctx.getAssets(), "helvetica.otf");
return typeface;
}
public static final Typeface ArialRounded(Context ctx){
Typeface typeface = Typeface.createFromAsset(ctx.getAssets(), "arial_rounded.ttf");
return typeface;
}
}
在我的代码中,在声明和初始化TextView后我只是设置了它的字体:
TextView title = (TextView)findViewById(R.id.title);
title.setTypeface(C.TYPEFACE.Helvetica(this));
我知道这不能解决你的问题,但我希望它有所帮助...
-serkan
答案 1 :(得分:3)
使用静态TYPEFACE扩展previous答案:
添加新功能:
public static void applyCustomFont(ViewGroup list, Typeface customTypeface) {
for (int i = 0; i < list.getChildCount(); i++) {
View view = list.getChildAt(i);
if (view instanceof ViewGroup) {
applyCustomFont((ViewGroup) view, customTypeface);
} else if (view instanceof TextView) {
((TextView) view).setTypeface(customTypeface);
}
}
}
获取布局的根视图:
View rootView = findViewById(android.R.id.content)
将整个活动表单的自定义字体应用于所有子元素:
applyCustomFont((ViewGroup)rootView, C.TYPEFACE.ArialRounded(this));
答案 2 :(得分:0)
另一种方法是扩展TextView的自定义视图。不漂亮,但你不需要在整个地方复制字体代码。
总之,这肯定是一个非常讨厌的问题。