Я использую следующую строку кода, чтобы установить собственный шрифт в виджете, используя remoteView.setTextViewText(R.id.folder_widget_text_view, SS);
, но он вообще не работает. Если я использовал тот же код в обычном методе TextView.setText(SS)
, он работает.
Что-то не так в моем коде или я что-то пропустил.
SpannableStringBuilder SS = new SpannableStringBuilder("hello");
SS.setSpan (new CustomTypefaceSpan(this, "Rosemary.ttf"), 0, SS.length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
remoteView.setTextViewText(R.id.folder_widget_text_view, SS);
Класс CustomTypefaceSpan
public class CustomTypefaceSpan extends MetricAffectingSpan
{
private static LruCache<String, Typeface> sTypefaceCache =
new LruCache<String, Typeface>(12);
private Typeface mTypeface;
public CustomTypefaceSpan(Context context, String typefaceName)
{
mTypeface = sTypefaceCache.get(typefaceName);
if (mTypeface == null)
{
mTypeface = Typeface.createFromAsset(context.getAssets(), 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);
}
}