将新字体应用于Android应用程序

时间:2013-01-24 19:03:39

标签: android android-layout fonts

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

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

style.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>

2 个答案:

答案 0 :(得分: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 -->
 />

答案 1 :(得分:0)

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

之后,你需要这个lib在你的成绩档案中编译它

complie'me.anwarshahriar:calligrapher:1.0'

并在主要活动

中的onCreate方法中使用它
Calligrapher calligrapher = new Calligrapher(this);
calligrapher.setFont(this, "yourCustomFontHere.ttf", true);

这是最优雅的超快方式。