ImageSpan在一个小部件?

时间:2011-09-30 21:49:04

标签: android

将ImageSpan添加到窗口小部件是否有任何限制? 这个相同的代码在标准的TextView中工作正常。

SpannableStringBuilder buf = new SpannableStringBuilder("");
if(!TextUtils.isEmpty(message.getMessageBody())) {
    SmileyParser parser = SmileyParser.getInstance();
    buf.append(parser.addSmileySpans(group ? message.getMessageBodyWithoutName() : message.getMessageBody()));
}
view.setTextViewText(R.id.message_body, buf);

感谢。

编辑1:

public CharSequence addSmileySpans(CharSequence text) {
SpannableStringBuilder builder = new SpannableStringBuilder(text);

Matcher matcher = mPattern.matcher(text);
while (matcher.find()) {
    int resId = mSmileyToRes.get(matcher.group());
    builder.setSpan(new ImageSpan(mContext, resId),
                    matcher.start(), matcher.end(),
                    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
return builder;

}

1 个答案:

答案 0 :(得分:1)

  

笑脸是本地资产。

我将从字面上解释这一点,即你的意思是你的图像在assets/

我的猜测是主屏幕难以解析您的资产参考。作为测试,请尝试将图像放在外部存储上,然后使用Uri.fromFile()创建Uri。如果可行,请尝试将它们作为可绘制资源并使用资源ID。或者,尝试使用资源Uri语法:

Uri.parse("android.resource://your.package.name.goes.here/" + R.raw.myvideo);