ImageSpan 可点击、图片与设置不一样大

ImageSpan可以在 TextView中嵌入图片。又或者说, android.text.style.* 里面的东西可以放在 SpannableString 里再设置到 TextView 里可以使 TextView 显示出不同的效果( Html. fromHtml() 就是返回一个 SpannableString或 Spannabed)。在设置 ImageSpan 的时候,出现了一个问题是设置进行的 Bitmap 画出来的大小并不是原来 Bitmap 的大小,经过源码查看,发现是 ImageSpan 当中通过 new BitmapDrawable( context.getResoutces(), b) 或 new BitmapDrawable(b) 生成 Drawable 导致的。
根据 api ,new BitmapDrawable的时候不传入 Context ,则是不处理密度生成 Drawable,这个时候就会出现设置进去的 Bitmap 跟画出来的图片大小不一致,达不到我想要的效果。
TextView设置 SpannableString,也是可以做点击的,对于 Span 的监听,主要是在 TextView. setMovementMethod() 方法当中传入的方法中的问题,原本我们可以通过 TextView. setMovementMethod( new LinkMovementMethod()) 使 ClickableSpan( UrlSpan) 生效,但是 ImageSpan本身并没有实现 ClickableSpan,而在 LinkMovementMethod 中,处理的只有 ClickableSpan,所以我们重写卫 LinkMovementMethod,使之处理 ImageSpan, 同时需要重写 ImageSpan 使之拥有 onClick (或其他方法,只要在 LinkMovementMethod 的 onTouchEvent 中调用即可)。

参考资料: http://www.cnblogs.com/luction/p/3645210.html


来自为知笔记(Wiz)


你可能感兴趣的:(ImageSpan 可点击、图片与设置不一样大)