感谢this post,我知道您可以在活动中添加字体,并可以在该类中使用它。使用:
TextView hindiTextView=(TextView)findViewById(R.id.txtbx);
Typeface hindiFont=Typeface.createFromAsset(getAssets(),"fonts/fontname.ttf");
mytextView.setTypeface(hindiFont);
但是,如果我想在一个地方添加字体并在整个应用程序中使用它,该怎么办? (如清单或某些属性文件)
答案 0 :(得分:1)
实际上,没有办法为整个应用程序实现常用的自定义字体。 结帐HERE 也就是说:不,您无法为整个应用设置字体。
但是如果您想尝试一下,请尝试以下引用HERE:
常用字体类:
public final class FontsOverride {
public static void setDefaultFont(Context context,
String staticTypefaceFieldName, String fontAssetName) {
final Typeface regular = Typeface.createFromAsset(context.getAssets(),
fontAssetName);
replaceFont(staticTypefaceFieldName, regular);
}
protected static void replaceFont(String staticTypefaceFieldName,
final Typeface newTypeface) {
try {
final Field StaticField = Typeface.class
.getDeclaredField(staticTypefaceFieldName);
StaticField.setAccessible(true);
StaticField.set(null, newTypeface);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
然后您需要重载几个默认字体,例如:
FontsOverride.setDefaultFont(this, "DEFAULT", "MyFontAsset.ttf");
FontsOverride.setDefaultFont(this, "MONOSPACE", "MyFontAsset2.ttf");
FontsOverride.setDefaultFont(this, "SANS_SERIF", "MyFontAsset3.ttf");
当然,如果你使用相同的字体文件,你可以改进它只加载一次。
答案 1 :(得分:0)
不,抱歉。您只能使用刚编写的代码添加自定义字体。
答案 2 :(得分:0)
创建一个扩展TextView的自定义类,添加它们的字体逻辑。不要在布局中使用Android TextView,而是使用<com.mypackage.myTextView android:id="@+id/myid />