2

我想在屏幕画布上绘制与第一个字符串相邻的第二个字符串。第二个字符串的起点应该是第一个字符串的宽度。我使用paint.measuretext()了Android的方法。但它返回的宽度小于实际宽度。所以我的第二个字符串与第一个重叠。任何人都可以解释如何获得字符串的准确宽度吗?

testString1 = "44444444444444444444444444444444444444444";
testString2 = "Sample Test String";
canvas.drawText(testString1,0,50, paint);
int textWidth = (int)paint.measureText(testString1);
canvas.drawText(testString2,textWidth,50, paint);
4

1 回答 1

0

measuretext() 是更精确的测量器。因此,您在测量和绘图之间更改了文本本身或字体或字体大小或其他内容。

也可以在这里查看其他测量方法。但不要等待太多 - measuretext 是一个很好的测量器,几乎可以肯定错误在你身边。

新编辑:检查 string1+string1 的相同函数 - 如果结果是前一个的 2 倍?如果是 - 这意味着您正在等待一个单位的结果,而您正在其他单位中获得结果。(测量文本以缩放像素工作)。也许绘画或画布使用不同的度量来设置 x,y 和文本度量。

编辑2:模拟器可以定义不正确的缩放比例。在那里尝试不同的分辨率/屏幕尺寸。如果它影响结果,您应该找到可以补偿屏幕分辨率影响的 Paint/Canvas 参数。

于 2012-01-09T22:32:44.177 回答