Установить пользовательские шрифты в строках

У меня есть пользовательские шрифты BebasNeue.otf который я хочу установить в переменных строки. Я много искал, но не нашел решения.

Я знаю, что мы можем установить пользовательские шрифты в представлениях, таких как textView.setTypeface(font);, Но теперь я хочу установить шрифты на Strings который у меня как ниже:

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

Это все строки содержат некоторые значения. Теперь я хочу установить пользовательские шрифты для всех строк, которые приведены ниже:

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

Может ли кто-нибудь сказать мне, как я могу установить вышеупомянутые шрифты в моей переменной Strings.

Любая помощь будет оценена.

Благодарю.

2 ответа

Решение

Я решил свою проблему, как показано ниже, и с помощью комментариев, предоставленных @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);

Спасибо всем за помощь и быстро.

Может быть, это может помочь.

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);
Другие вопросы по тегам