将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;
}
答案 0 :(得分:1)
笑脸是本地资产。
我将从字面上解释这一点,即你的意思是你的图像在assets/
。
我的猜测是主屏幕难以解析您的资产参考。作为测试,请尝试将图像放在外部存储上,然后使用Uri.fromFile()
创建Uri
。如果可行,请尝试将它们作为可绘制资源并使用资源ID。或者,尝试使用资源Uri
语法:
Uri.parse("android.resource://your.package.name.goes.here/" + R.raw.myvideo);