使用ImageSpan在TextView中加入图片(例如:百度贴吧置顶或精华图标设置)效果如下所示:
使用imageSpan的关键代码如下所示:
/**
* @param textview
* @param str 文本内容
* @param iconName “精华”或“置顶”
*/
public void setEssenceOrTop(TextView textview, String str,String iconName){
String content ="";
ImageSpan imageSpan = null;
Drawable drawable = null;
content = "【"+iconName+"】 "+str;//在文本内容最前面加入【精华】或者【置顶】
SpannableStringBuilder spanText = new SpannableStringBuilder();
spanText.append(content);
if("精华".equals(iconName)){
drawable = mContext.getResources().getDrawable(R.drawable.icon_elite);
}
if("置顶".equals(iconName)){
drawable =mContext.getResources().getDrawable(R.drawable.icon_top);
}
drawable.setBounds(0, 0, drawable.getMinimumWidth(),
drawable.getMinimumHeight());
imageSpan = new ImageSpan(drawable,ImageSpan.ALIGN_BASELINE);//以基线对齐
//取得【精华】或者【置顶】的范围
int start = content.indexOf("【"+iconName+"】");
int end = start + ("【"+iconName+"】").length();
//使用对应的图标替代【精华】或者【置顶】
textview.setText(spanText);
}
说明:Spanned.SPAN_EXCLUSIVE_EXCLUSIVE(前后都不包括)
Spanned.SPAN_INCLUSIVE_EXCLUSIVE(前面包括,后面不包括)
Spanned.SPAN_EXCLUSIVE_INCLUSIVE(前面不包括,后面包括)
Spanned.SPAN_INCLUSIVE_INCLUSIVE(前后都包括)