在我正在开发的应用程序中,我试图使用Paint在Canvas上绘制一些文本。为此,我使用:
String string = " a ";
Rect bounds = new Rect();
mPaint.getTextBounds(string, 0, string.length(), bounds);
问题是,这给了我“a”的界限,而不是“a”的界限。它删除了a之后的空格,但我不希望它这样做。
有人知道如何获得文字界限,包括字母后面的空格吗?
**编辑:**
我找到了一个解决方法:
String string = " a ";
Rect bounds = new Rect();
mPaint.getTextBounds(string, 0, string.length(), bounds);
float width = mPaint.measureText(string);
float height = bounds.height();
RectF boundsF = new RectF(x, y, x + width, y + height);
问题是getTextBounds()是一个删除所有后端空格的本机方法。 Paint.measureText(String string)不会这样做,所以我们可以使用这个宽度。
答案 0 :(得分:0)
来自doc
参数: text要测量并返回其边界的字符串
启动要测量的字符串中第一个字符的索引
结束 1 超过字符串度量中的最后一个字符
bounds返回所有文本的联合边界。必须由来电者分配。
所以我认为你需要打电话,
mPaint.getTextBounds(string, 0, string.length()+1, bounds);