3

我通过渲染文本StaticLayout并将其绘制onDraw()在我的自定义视图中,而不是TextView. 一切正常,直到我使用Android Nougat. 在某些情况下,StaticLayout错误地创建了lineWidthouterWidth我传入的更大的constructor()。所以它会导致我的自定义视图呈现错误。(限制区域外)
Android Marshmallow,预期结果。
在此处输入图像描述

Andorid Nougat,意想不到的结果。
在此处输入图像描述

StaticLayout textLayout = new StaticLayout(text, paint, outerwidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);
for (int i = 0; i < textLayout.getLineCount(); i++) {
    lineWidth = textLayout.getLineWidth(i); // lineWidth sometimes is bigger than outerWidth
    ....
}

我不知道导致该错误的规则是什么。(如果我更改了 outerWidth 或文本,则不会发生错误。)
有人可以帮助他们吗?提前致谢。

4

0 回答 0