Android 在小部件远程视图上设置自定义字体无效
我正在使用下面的代码行使用Android 在小部件远程视图上设置自定义字体无效,android,widget,android-remoteview,Android,Widget,Android Remoteview,我正在使用下面的代码行使用remoteView.setTextViewText(R.id.folder\u widget\u text\u view,SS)在小部件上设置自定义字体
remoteView.setTextViewText(R.id.folder\u widget\u text\u 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);
自定义字体span类
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);
}
}
public类CustomTypefaceSpan扩展了MetricEffectingSpan
{
专用静态LruCache sTypefaceCache=
新卢卡什(12);
私人字体;
公共CustomTypefaceSpan(上下文上下文,字符串typefaceName)
{
mTypeface=stypefacache.get(typefaceName);
if(mTypeface==null)
{
mTypeface=Typeface.createFromAsset(context.getAssets(),typefaceName);
//缓存加载的字体
sTypefaceCache.put(typefaceName,mTypeface);
}
}
@凌驾
公共无效更新度量重述(textp)
{
p、 setTypeface(MTTypeface);
//注意:正确的字体呈现需要此标志
p、 setFlags(p.getFlags()|绘制子像素_文本_标志);
}
@凌驾
public void updateDrawState(TextPaint)
{
tp.setTypeface(mTypeface);
//注意:正确的字体呈现需要此标志
tp.setFlags(tp.getFlags()| Paint.SUBPIXEL_TEXT_FLAG);
}
}
您可以尝试我知道使用位图是可能的,但它不会在所有设备中给我正确的结果。所以我需要更好的解决方案。