利用TextView+SpannableString实现了如图所示的图文混排效果:
但是可以看出标题的行间距还是有点小的,显得整个布局很挤,因此需要修改一下行间距,不过修改行间距之后发现,图片与文字的显示出现了错乱:
后来在网上百度到的解决方法,重写ImageSpan,重新计算前面图片的位置:
public class MyImageSpan extends ImageSpan {
public MyImageSpan(Context context, Bitmap b) {
super(context, b);
}
@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;
canvas.save();
canvas.translate(x, transY);
b.draw(canvas);
canvas.restore();
}
}
修改过之后,问题解决: