3

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

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

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

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

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

谁能告诉我如何在我的字符串变量中设置上述字体。

任何帮助将不胜感激 。

谢谢。

4

2 回答 2

4

我已经通过以下方式解决了我的问题,并在@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);

感谢所有人快速帮助我。

于 2013-11-22T11:13:11.543 回答
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);
于 2013-12-02T13:02:35.030 回答