Android绘制文字时垂直居中
Posted 辉﹏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android绘制文字时垂直居中相关的知识,希望对你有一定的参考价值。
canvas.drawText(String text, float x, float y, Paint paint);
是android中绘制文本的方法,其中的x代表文字绘制时在X轴的起始点,而y是在Y轴绘制时,文字的 baseline,不是文字的中心点也不是文字的底部。
下面代码根据绘制的Y轴中心点centerY,算出了baseline,top,bottom,ascent和descent
@Override protected void onDraw(Canvas canvas) { int top = mPaint.getFontMetricsInt().top; int bottom = mPaint.getFontMetricsInt().bottom; int ascent = mPaint.getFontMetricsInt().ascent; int descent = mPaint.getFontMetricsInt().descent; int baselineY =centerY + (bottom-top)/2 - bottom; top = baselineY + top; bottom = baselineY + bottom; ascent = baselineY + ascent; descent = baselineY + descent; mPaint.setColor(Color.GREEN); canvas.drawText(text, 100, baselineY, mPaint); canvas.drawLine(0, centerY, getMeasuredWidth(), centerY, mPaint); mPaint.setStrokeWidth(2); mPaint.setColor(Color.BLACK); canvas.drawLine(0, top, getMeasuredWidth(), top, mPaint); mPaint.setColor(Color.YELLOW); canvas.drawLine(0, ascent, getMeasuredWidth(), ascent, mPaint); mPaint.setColor(Color.RED); canvas.drawLine(0, baselineY, getMeasuredWidth(), baselineY, mPaint); mPaint.setColor(Color.YELLOW); canvas.drawLine(0, descent, getMeasuredWidth(), descent, mPaint); mPaint.setColor(Color.BLACK); canvas.drawLine(0, bottom, getMeasuredWidth(), bottom, mPaint); }
以上是关于Android绘制文字时垂直居中的主要内容,如果未能解决你的问题,请参考以下文章
android 代码中设置控件的垂直居中和两个控件之间的距离。
android 代码中设置控件的垂直居中和两个控件之间的距离。
Android进阶 二十二 设置TextView文字水平垂直居中