相关疑难解决方法(0)

Android Paint:.measureText()vs .getTextBounds()

我正在测量文本Paint.getTextBounds(),因为我有兴趣获得要渲染的文本的高度和宽度.但是,实际呈现的文本总是比填充.width()Rect信息宽一些getTextBounds().

令我惊讶的是,我进行了测试.measureText(),发现它返回了一个不同的(更高)值.我试一试,发现它是正确的.

为什么他们报告不同的宽度?我怎样才能正确获得高度和宽度?我的意思是,我可以使用.measureText(),但后来我不知道我是否应该相信.height()返回者getTextBounds().

根据要求,这里是重现问题的最小代码:

final String someText = "Hello. I believe I'm some text!";

Paint p = new Paint();
Rect bounds = new Rect();

for (float f = 10; f < 40; f += 1f) {
    p.setTextSize(f);

    p.getTextBounds(someText, 0, someText.length(), bounds);

    Log.d("Test", String.format(
        "Size %f, measureText %f, getTextBounds %d",
        f,
        p.measureText(someText),
        bounds.width())
    );
}
Run Code Online (Sandbox Code Playgroud)

输出显示的差异不仅得到大于1(且没有最后一分钟的舍入误差),也似乎增加与大小(我正要吸引更多的结论,但它可能是完全的字体相关的):

D/Test    (  607): Size 10.000000, measureText 135.000000, …
Run Code Online (Sandbox Code Playgroud)

android textview android-layout

188
推荐指数
6
解决办法
9万
查看次数

Android:measureText()基于缩放像素返回像素

所以我使用Paint的measureText()方法来测量一段文本的宽度,但我想根据特定的文本大小来测量文本.假设我想要获得文本片段的宽度,当它占用某个TextView时,它将是20个像素的像素.我尝试了以下方法:

Paint paint = new Paint();
paint.setTextSize(20);
paint.measureText("sample text");
Run Code Online (Sandbox Code Playgroud)

但是,它似乎没有起作用.我相信它会返回相对于较小文本大小的宽度.我觉得我错过的东西会让我在脸上拍打自己,然后大喊大叫.

android paint text-size

17
推荐指数
1
解决办法
2万
查看次数

标签 统计

android ×2

android-layout ×1

paint ×1

text-size ×1

textview ×1