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);
}
}

您可以尝试我知道使用位图是可能的,但它不会在所有设备中给我正确的结果。所以我需要更好的解决方案。