0

我正在尝试在我的应用程序 android 中应用新字体,并且可以从 style.xml 调用

例如。我的字体在 assets/thaoma.ttf

样式.xml

<style name="text_black_color_bold" >
        <item name="android:textColor">#3E3E3E</item>
        <item name="android:textStyle">bold</item>
        <item name="android:typeface"></item> /* call new font here */
    </style>
4

2 回答 2

1

您不能从 xml 中包含它。你必须通过这样的代码来做到这一点:

final TextView myTextView = getTextView();
final AssetManager assets = ctx.getAssets();
final Typeface font = Typeface.createFromAsset(assets, "thamoa.ttf");
setTypeface(font);

一个绝妙的技巧是扩展 TextView 并在运行时自动应用字体。

public class CustomTextView extends TextView {

    public CustomTextView(Context ctx) {
        super(ctx);
        setupText(ctx);
    }

    public CustomTextView(Context ctx, AttributeSet attrs) {
        super(ctx, attrs);
        setupText(ctx);
    }

    public CustomTextView(Context ctx, AttributeSet attrs, int defStyle) {
        super(ctx, attrs, defStyle);
        setupText(ctx);
    }

    private void setupText(Context ctx) {
        // check if in edit mode and return. Fonts can't be applied when viewing from editor
        if(isInEditMode()) {
           return;
        }

        final AssetManager assets = ctx.getAssets();
        final TypeFace font = Typeface.createFromAsset(assets, "thamoa.ttf");
        setTypeface(font);
    }
}

然后你可以以同样的方式使用它,但在 xml 中像这样引用它:

<package.containing.class.CustomTextView
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   <!-- whatever attributes that would normally apply here -->
 />
于 2013-01-24T19:13:05.867 回答
0

如果您想将此自定义字体设置为整个应用程序,我认为这是您的情况,请创建一个资产目录并将您的 customefont.ttf 文件放在该目录中。

之后,您需要将此库编译到您的成绩文件中

complie'me.anwarshahriar:calligrapher:1.0'

并在主活动的 onCreate 方法中使用它

Calligrapher calligrapher = new Calligrapher(this);
calligrapher.setFont(this, "yourCustomFontHere.ttf", true);

这是最优雅的超快速方式。

于 2017-08-24T03:18:54.180 回答