相关疑难解决方法(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中的Gettextbounds

我们曾经找到适合给定文本的矩形,例如,如果在gettextbounds api中给出"TESTING",它将给出一个适合给定字符串"TESTING"的矩形,但是任何plz都可以澄清在哪个基础上计算矩形长度,我是否可以这样检查字体大小是否可以考虑?

1)我试过CharSequence text = getText(); canvas.drawText(text,0,text.length(),mTextX,mTextY,getPaint());

    Paint pt = new Paint ( );
    pt.setTextSize(10);

    TextPaint tp = getPaint();
    String string = "haa";
    Rect currentBounds = new Rect ( );
    //this.setTextSize(/* TypedValue.COMPLEX_UNIT_PX */ 10, /* fontPixelSize*Home.fltFontRatio */ 32);

    tp.getTextBounds((String) text, 0, text.length(), currentBounds );

    Log.e ( " ", "Desired Text " +text);
    Log.e ( " ", "first Ondraw Left " +currentBounds.left);
    Log.e ( " ", "Ondraw Top" +currentBounds.top);
    Log.e ( " ", "Ondraw right " +currentBounds.right);
    Log.e ( " ", …
Run Code Online (Sandbox Code Playgroud)

android

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

标签 统计

android ×2

android-layout ×1

textview ×1