0

感谢这篇文章,我知道您可以在活动中添加字体并可以在该类中使用它。使用:

 TextView hindiTextView=(TextView)findViewById(R.id.txtbx);
 Typeface hindiFont=Typeface.createFromAsset(getAssets(),"fonts/fontname.ttf");
 mytextView.setTypeface(hindiFont);

但是如果我想在一个地方添加一个字体并在整个应用程序中使用它呢?(如清单或某些属性文件中)

4

3 回答 3

1

实际上没有办法为整个应用程序实现通用的自定义字体。Checkout 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");

或者当然,如果您使用相同的字体文件,您可以对此进行改进以仅加载一次。

于 2013-10-11T07:02:28.407 回答
0

不,对不起。您只能使用刚刚编写的代码添加自定义字体。

于 2013-10-11T06:33:00.373 回答
0

创建一个扩展 TextView 的自定义类,为其添加字体逻辑。而不是在 layout 中使用 android TextView ,使用 <com.mypackage.myTextView android:id="@+id/myid />

于 2013-10-11T06:33:48.660 回答