#Android笔记#解决textview使用SpannableString实现图文混排并设置了行高时,图片与文字显示混乱

利用TextView+SpannableString实现了如图所示的图文混排效果:

#Android笔记#解决textview使用SpannableString实现图文混排并设置了行高时,图片与文字显示混乱_第1张图片

但是可以看出标题的行间距还是有点小的,显得整个布局很挤,因此需要修改一下行间距,不过修改行间距之后发现,图片与文字的显示出现了错乱:

#Android笔记#解决textview使用SpannableString实现图文混排并设置了行高时,图片与文字显示混乱_第2张图片

后来在网上百度到的解决方法,重写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();
    }
}

修改过之后,问题解决:

#Android笔记#解决textview使用SpannableString实现图文混排并设置了行高时,图片与文字显示混乱_第3张图片

你可能感兴趣的:(Android笔记)