在Android Canvas上围绕字符串设置矩形

Mar*_*nov 5 java graphics android android-canvas

所以我使用Canvas.drawTextCanvas上绘制一些字符串.问题是我想在它之前绘制一个矩形,以便文本显示在矩形的中心.但我遇到了一个真正的问题.所提供的XŸ坐标的drawText其实是不是"的左上角真实文本的"一角,而是对其中的字符开头的行.Paint.getTextBounds有一个方法,它在将要绘制的文本的(0,0)处返回一个"具有隐含原点"的矩形.问题是原点是(0,0).该框的宽度和高度是正确的,但我不知道如何将其左上角放在画布上绘制的字符串的左上角.我想我应该使用FontMetrics,但由于FontMetrics返回的很多值都没有记录,所以我不确定如何将它们用于我的目的.

Mar*_*nov 13

我最终做了

FontMetrics fm = new FontMetrics();
paint.setTextAlign(Paint.Align.CENTER);
paint.getFontMetrics(fm);
canvas.drawText(text, x, y + -(fm.ascent + fm.descent) / 2, paint);
Run Code Online (Sandbox Code Playgroud)

这实际上是以x,y为中心绘制文本.在此之前,我绘制一个以x,y为中心的矩形,宽度为paint.measureText(text)