在TextView中插入图片,我们一般是使用ImageSpan,但是在使用过程中,发现当TextView中一行未满时自动换行(这种情况一般是发生在中英文混排),插入在首部的ImageSpan不显示了,如下图:
原本在首部会有一个置顶的图标,但是由于换行导致ImageSpan不显示了。
这里的解决方法是换了一种实现方式,使用Html.fromHtml的ImageGetter
/**
* 获取图片标签
*/
private static Spanned getImageSpan(final Context context,int resId){
Spanned hotSpan = Html.fromHtml("<img src='" + resId + "'/> ", new Html.ImageGetter() {
@Override
public Drawable getDrawable(String source) {
if(!TextUtils.isEmpty(source)) {
int id = Integer.parseInt(source);
//根据id从资源文件中获取图片对象
Drawable d = context.getResources().getDrawable(id);
if (d != null) {
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
}
return d;
}
return null;
}
},null);
/*SpannableStringBuilder hotSpan = new SpannableStringBuilder(" ");
VerticalImageSpan imageSpan = new VerticalImageSpan(context, resId);
hotSpan.setSpan(imageSpan, 0, 1, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);*/
return hotSpan;
}