Android 如何从绘制中获取文本基线
我试图在画布的中心绘制文本,因为画布从基线开始绘制文本,所以我无法将其放置在中心。如果我能得到基线,那么我就能计算出中心 我试过使用Android 如何从绘制中获取文本基线,android,android-canvas,Android,Android Canvas,我试图在画布的中心绘制文本,因为画布从基线开始绘制文本,所以我无法将其放置在中心。如果我能得到基线,那么我就能计算出中心 我试过使用paint.getFontMetrics()这会给出上升和下降,但不会给出基线。你试过这段代码吗 private void drawCenter(Canvas canvas, Paint paint, String text) { canvas.getClipBounds(r); int cHeight = r.height(); int c
paint.getFontMetrics()
这会给出上升和下降,但不会给出基线。你试过这段代码吗
private void drawCenter(Canvas canvas, Paint paint, String text) {
canvas.getClipBounds(r);
int cHeight = r.height();
int cWidth = r.width();
paint.setTextAlign(Paint.Align.LEFT);
paint.getTextBounds(text, 0, text.length(), r);
float x = cWidth / 2f - r.width() / 2f - r.left;
float y = cHeight / 2f + r.height() / 2f - r.bottom;
canvas.drawText(text, x, y, paint);
}
paint.getFontMetrics()
的所有计算都将针对基线进行。因此,如果我只是减去(getMeasuredHeight()/2f)-(fontMetrics.ascent/2f)
它将从中心绘制请检查我是否以相同的方式绘制。它成功了,谢谢你。