Установить пользовательские шрифты в строках
У меня есть пользовательские шрифты 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);