@Override
public void draw(Canvas canvas, CharSequence text, int start, int end,
float x, int top, int y, int bottom, Paint paint) {
if (mVerticalAlignment == ALIGN_MIDDLE) {
Drawable d = getDrawable();
canvas.save();
// // 注意如果这样实现会有问题:TextView 有 lineSpacing 时,这里 bottom 偏大,导致偏下
// int transY = bottom - d.getBounds().bottom; // 底对齐
// transY -= (paint.getFontMetricsInt().bottom - paint.getFontMetricsInt().top) / 2 - d.getBounds().bottom / 2; // 居中对齐
// canvas.translate(x, transY);
// d.draw(canvas);
// canvas.restore();
Paint.FontMetricsInt fontMetricsInt = paint.getFontMetricsInt();
int fontTop = y + fontMetricsInt.top;
int fontMetricsHeight = fontMetricsInt.bottom - fontMetricsInt.top;
int iconHeight = d.getBounds().bottom - d.getBounds().top;
int iconTop = fontTop + (fontMetricsHeight - iconHeight) / 2;
canvas.translate(x, iconTop);
d.draw(canvas);
canvas.restore();
} else {
super.draw(canvas, text, start, end, x, top, y, bottom, paint);
}
}
QMUIAlignMiddleImageSpan.java 文件源码
java
阅读 32
收藏 0
点赞 0
评论 0
项目:qmui
作者:
评论列表
文章目录