当我将ImageSpan添加到SpannableString时,我看到两次相同的图像。 SpannableString是根据Html.fromHtml()
我用来添加ImageSpan的代码如下。
public void updateSpan(URLDrawable tweetImage, int startSpan, int endSpan){
TextView textView = (TextView) findViewById(R.id.story_body);
SpannableString ss = new SpannableString(textView.getText());
Drawable d = tweetImage.getDrawable();
d.setBounds(0, 0, (int) (d.getIntrinsicWidth() * 3), (int) (d.getIntrinsicHeight() * 3));
ImageSpan span = new ImageSpan(d , ImageSpan.ALIGN_BOTTOM);
ss.setSpan(span, startSpan, endSpan, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
textView.setText(ss);
}
我搜索并发现了几个类似的问题(见下文),但在这种情况下没有任何建议。
Picture in spannable edittext display twice
Why does android ImageSpan show my picture twice (when setBounds exceed certain magic width)?
(我试图发布问题的图片,但是没有代表这样做:))
答案 0 :(得分:0)
我找到了答案..
与Why does android ImageSpan show my picture twice (when setBounds exceed certain magic width)?
类似这是由setBounds中设置的高度大于可从活动中较早创建drawable的Bitmap引起的。当发生这种情况时,似乎发生了两件事......
首先,如果尺寸只是略微(我没有经过广泛的测试,一旦我开始工作,所以我不确定精确的数字)超过了Bitmap的大小,那么就会增加一个大的空白区域跨度,此空白区域与插入的位图大小相同。
其次,Drawable的额外副本将添加到跨度,直接位于空格下方。
分辨率相对简单。确保在创建Drawable和调用setBounds之前,用于创建Drawable的Bitmap设置为预期的最终大小。
这可能不适用于所有情况,但对我有用,并希望对某人有所帮助。