所以基本上,我正在尝试更改 xml 布局的所有视图上的字体。这只能通过非 xml 方法来完成。出于某种原因,setFont 不适用于我的膨胀视图组子项。我想我的 viewGroup 是错误的......我怎样才能更好地实例化它?当我使用像按钮这样的常规视图时,代码可以工作,但我不想定义一百万个按钮和文本视图,所以我的解决方案是创建一个从布局创建的视图组,并遍历其中的所有视图以更改字体。请帮忙!
public static void applyFonts(final View v, Typeface fontToSet) {
try {
if (v instanceof ViewGroup) {
ViewGroup vg = (ViewGroup) v;
for (int i = 0; i < vg.getChildCount(); i++) {
View child = vg.getChildAt(i);
applyFonts(child, fontToSet);
}
} else if (v instanceof TextView) {
((TextView) v).setTypeface(fontToSet);
} catch (Exception e) {
e.printStackTrace();
}
}
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ViewGroup vg = (ViewGroup) inflater.inflate(R.layout.main, null);
Typeface rockwellFont = Typeface.createFromAsset(getAssets(), "Rockwell.ttf");
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ViewGroup vg = (ViewGroup) inflater.inflate(R.layout.main, null);
applyFonts(vg,rockwellFont);
setContentView(vg);