我想在屏幕上的第一个字符串旁边绘制第二个字符串。第二个字符串的起点应该是第一个字符串的宽度。我使用了Android的paint.measuretext()
方法。但它返回的宽度小于实际宽度。所以我的第二个字符串与第一个字符串重叠。任何人都可以解释如何获得字符串的准确宽度吗?
testString1 = "44444444444444444444444444444444444444444";
testString2 = "Sample Test String";
canvas.drawText(testString1,0,50, paint);
int textWidth = (int)paint.measureText(testString1);
canvas.drawText(testString2,textWidth,50, paint);
答案 0 :(得分:0)
measuretext()是更精确的测量器。因此,您在测量和绘图之间更改了文本本身或字体或字体大小等。
另请参阅here了解其他测量方法。但是不要等待太多 - 测量文本是一个很好的测量者,错误几乎肯定在你身边。
新编辑: 检查string1 + string1的相同函数 - 如果结果是前一个2x?如果是 - 这意味着您正在等待一个单位的结果,而您正在其他单位中获得结果。 (measuretext在缩放像素中工作)。也许油漆或画布使用不同的度量来设置x,y和文本度量。
编辑2: 可以通过仿真器定义不正确的缩放。尝试不同的分辨率/屏幕尺寸。如果它影响结果,您应该找到Paint / Canvas参数,通过该参数可以补偿屏幕分辨率的影响。