2015-06-23 2 views
0

Когда я добавляю ImageSpan в SpannableString, я вижу одно и то же изображение дважды. SpannableString был создан из текста, вставленного в TextView, на Html.fromHtml()ImageSpan добавляется дважды при добавлении в SpannedString

Код, который я использую для добавления 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

Я нашел ответ ..

В аналогичная вена к Why does android ImageSpan show my picture twice (when setBounds exceed certain magic width)?

Это было вызвано высотой, установленной в setBounds большей чем растровое изображение, которое было создано из ранее сделанного в операции. Когда это происходит, есть две вещи, которые, кажется, происходят.

Во-первых, если размер немного незначительный (я не проверил это, как только я его заработал, поэтому я не уверен в точном размере) превышает размер битмап, тогда большое количество пробелов добавляется к проему, это пустое пространство того же размера, что и вставленная битовая карта.

Во-вторых, дополнительная дополнительная длина Drawable добавляется к пролету непосредственно под пустым пространством.

Разрешение было относительно простым .. Убедитесь, что битмап, используемый для создания Drawable, был установлен на конечный размер до создания Drawable и call setBounds.

Это может не работать во всех случаях, но работало для меня и, надеюсь, будет полезно для кого-то.

Смежные вопросы