使用breakText,maxWidth应该有什么值?

时间:2013-04-18 18:05:43

标签: android paint

在我目前的代码中,我获取了屏幕的宽度,并在我的breakText中使用它作为maxWidth。

    Display display = getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);
    int width = size.x;

    Paint p = new Paint();
    p.setTextSize(60);
    p.setSubpixelText(true);

endChar = p.breakText(fullText, 0, endText, true, width, null);

这段代码并没有给出我想要的答案,它提供的字符比需要的多,但我想我错误地使用了maxWidth。有人可以解释一下应该在maxWidth中输入什么内容吗?

1 个答案:

答案 0 :(得分:0)

请记住设备上文字的屏幕密度和比例因子。您应该用paledDensity将屏幕宽度除以px,以获得sp中的屏幕宽度。

看起来应该是这样的:

    Display display = getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);
    DisplayMetrics metrics = getResources().getDisplayMetrics();
    int width = (int)((float)size.x/metrics.scaledDensity);

    Paint p = new Paint();
    p.setTextSize(60);
    p.setSubpixelText(true);

    endChar = p.breakText(fullText, 0, endText, true, width, null);