在字符串中设置自定义字体

时间:2013-11-22 10:41:26

标签: android fonts android-xml android-fonts

我有一个自定义字体BebasNeue.otf,我想在字符串变量中设置。我搜索了很多,但没有得到任何解决方案。

我知道我们可以在textView.setTypeface(font);等视图中设置自定义字体。但现在我想将字体设置为Strings,如下所示:

String Name,Contact;
 Name="ABCD";
 Contact="97696538";

这所有字符串都包含一些值。现在我想将自定义字体设置为以下所有字符串:

 Typeface fontString = Typeface.createFromAsset(m_context.getAssets(),
            "BebasNeue.otf");

任何人都可以告诉我如何在我的Strings变量中设置上述字体。

任何帮助将不胜感激。

感谢。

2 个答案:

答案 0 :(得分:3)

我已在@ASP提供的评论的帮助下解决了我的问题。

 Typeface fontString = Typeface.createFromAsset(m_context.getAssets(),
                "BebasNeue.otf");
   Paint paint = new Paint();
   paint.setTypeface(fontString);
   mCanvas.drawText("ID :" + m_sId, dw - 450, dh - 350, paint);

感谢所有人帮助我并迅速。

答案 1 :(得分:0)

也许这会有所帮助。

public class TypefaceSpan extends MetricAffectingSpan {
/** An <code>LruCache</code> for previously loaded typefaces. */
private static LruCache<String, Typeface> sTypefaceCache = new LruCache<String, Typeface>(
        12);

private Typeface mTypeface;

/**
 * Load the {@link Typeface} and apply to a {@link Spannable}.
 */
public TypefaceSpan(Context context, String typefaceName) {
    mTypeface = sTypefaceCache.get(typefaceName);

    if (mTypeface == null) {
        mTypeface = Typeface.createFromAsset(context.getApplicationContext().getAssets(), 
                                             String.format("%s", typefaceName));

        // Cache the loaded Typeface
        sTypefaceCache.put(typefaceName, mTypeface);
    }
}

@Override
public void updateMeasureState(TextPaint p) {
    p.setTypeface(mTypeface);

    // Note: This flag is required for proper typeface rendering
    p.setFlags(p.getFlags() | Paint.SUBPIXEL_TEXT_FLAG);
}

@Override
public void updateDrawState(TextPaint tp) {
    tp.setTypeface(mTypeface);

    // Note: This flag is required for proper typeface rendering
    tp.setFlags(tp.getFlags() | Paint.SUBPIXEL_TEXT_FLAG);
}
}

并像这样使用

SpannableString s = new SpannableString("My Title");
s.setSpan(new TypefaceSpan(this, "MyTypeface.otf"), 0, s.length(),
        Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);