关于Android使用TextView+ImageSpan同一行文字图片居中的问题

项目开发中遇到了这样一个需求,标签(图片)和文字,,标签显示在标题的开头,自然而然想到了用TextView+ImageSpan的方式来弄,开始没有思路,网上搜索一下基本上都有说到,但是都没有解决一个问题,就是居中。怎么设置都设置不了!后来找到一篇文章里面介绍了ImageSpan的getSize()方法设置了展示位置!下面给出自定义修改的ImageSpan,至于怎么用ImageSpan就不多说了

/** * 垂直居中的ImageSpan * * @author KenChung */public class VerticalImageSpan extends ImageSpan {public VerticalImageSpan(Drawable drawable) {super(drawable);}public int getSize(Paint paint, CharSequence text, int start, int end,Paint.FontMetricsInt fontMetricsInt) {Drawable drawable = getDrawable();Rect rect = drawable.getBounds();if (fontMetricsInt != null) {Paint.FontMetricsInt fmPaint = paint.getFontMetricsInt();int fontHeight = fmPaint.bottom – fmPaint.top;int drHeight = rect.bottom – rect.top;int top = drHeight / 2 – fontHeight / 4;int bottom = drHeight / 2 + fontHeight / 4;fontMetricsInt.ascent = -bottom;fontMetricsInt.top = -bottom;fontMetricsInt.bottom = top;fontMetricsInt.descent = top;}return rect.right;}@Overridepublic void draw(Canvas canvas, CharSequence text, int start, int end,float x, int top, int y, int bottom, Paint paint) {Drawable drawable = getDrawable();canvas.save();int transY = 0;transY = ((bottom – top) – drawable.getBounds().bottom) / 2 + top;canvas.translate(x, transY);drawable.draw(canvas);canvas.restore();}}

找一个让心里安静和干净的地方,

关于Android使用TextView+ImageSpan同一行文字图片居中的问题

相关文章:

你感兴趣的文章:

标签云: