Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从绘制中获取文本基线_Android_Android Canvas - Fatal编程技术网

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)
它将从中心绘制

请检查我是否以相同的方式绘制。它成功了,谢谢你。