一:若是給同一行文字添加 標(biāo)簽,并且換行的文字是在標(biāo)簽正下面,如圖所示:

image.png
解決方案,使用:ImageSpan 參考地址
自定義 ImageSpan,方便使其居中展示
public class CenterImageSpan extends ImageSpan {
public CenterImageSpan(Drawable drawable) {
super(drawable);
}
public CenterImageSpan(Bitmap bitmap) {
super(bitmap);
}
@Override
public void draw(@NonNull Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom,
@NonNull Paint paint) {
Drawable b = getDrawable();
Paint.FontMetricsInt fm = paint.getFontMetricsInt();
int transY = (y + fm.descent + y + fm.ascent) / 2 - b.getBounds().bottom / 2;//計(jì)算y方向的位移
canvas.save();
canvas.translate(x, transY);//繪制圖片位移一段距離
b.draw(canvas);
canvas.restore();
}
}
代碼中具體使用:
/**
*
* @param context
* @param imgBitmaps 圖片列表
* @param content 文本內(nèi)容
* @param width 圖片寬度
* @param height 圖片高度
* @param isStart 是否是添加在頭部
*/
public void setTagImageList(Context context, List<Bitmap> imgBitmaps, String content, int width, int height,boolean isStart) {
if(imgBitmaps==null){
return;
}
//文本和 圖片的總 builder
SpannableStringBuilder builderAll = new SpannableStringBuilder();
// 純放 圖片的builder
SpannableStringBuilder builderImages = new SpannableStringBuilder();
for (int i = 0; i <imgBitmaps.size(); i++) {
//創(chuàng)建一個(gè) 占位符的 builder,,占位符看你怎么使用,設(shè)置1個(gè)也行,設(shè)置多個(gè)也行。若是需要有間隙。那就多放個(gè)空格,不去替換
SpannableStringBuilder builderImage = new SpannableStringBuilder("*");
Bitmap bitmap = imgBitmaps.get(i);
Drawable drawable = new BitmapDrawable(getResources(),bitmap);
drawable.setBounds(0, 0, dp2px(context, width), dp2px(context, height));
//創(chuàng)建 span
CenterImageSpan span = new CenterImageSpan(drawable);
//添加span
builderImage.setSpan(span, 0, builderImage.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
builderImages.append(builderImage);
}
//判斷是添加尾部。還是頭部
if(isStart){
builderAll.append(builderImages)
.append(content);
}else {
builderAll.append(content)
.append(builderImages);
}
setText(builderAll);
setGravity(mGravity);
}
具體效果如上圖所示,
待改進(jìn),1:bitmap集合,其實(shí)需要優(yōu)化的,要把當(dāng)前圖片大小限制跟在一塊,
2:設(shè)置是否需要有空格占位符。不能那么擠在一塊不是
都比較簡(jiǎn)單去改進(jìn),只是提供下思路