自定义了一个imageSpan实现图片与文字对齐并且可以混排 直接上代码
package ***;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.drawable.Drawable;
import android.text.style.ImageSpan;
import androidx.annotation.NonNull;
public class CenterAlignImageSpan extends ImageSpan {
public CenterAlignImageSpan(@NonNull Drawable drawable) {
super(drawable);
}
@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();
}
}
我一般使用AndroidUtilCode的SpanUtil进行文本不同格式拼接,下面举个例子
val drawable =ContextCompat.getDrawable(this,R.mipmap.class_tip_order)
drawable!!.setBounds(0,0,drawable.minimumWidth,drawable.minimumHeight)
tv_course_class_tip1.text =
SpanUtils()
.append("登录官网")
.append("图片")
.setSpans(CenterAlignImageSpan(drawable))
.append("点击考研政治课程")
.append("图片")
.setSpans(CenterAlignImageSpan(drawable))
.append("点击考研政治课程")
.append("图片")
.setSpans(CenterAlignImageSpan(drawable))
.append("点击当天直播即可进入课堂")
.append("图片")
.setSpans(CenterAlignImageSpan(drawable))
.append("课程结束后30分钟左右,可点击【回放】进行观看和复习")
.create()
|