【发布时间】:2019-12-26 18:28:42
【问题描述】:
我正在使用StaticLayout 在画布上绘制多行文本,并且我想在绘制之前测量文本周围最紧密的边界框,(文本可以有不同的大小、字体、样式等... ),我想要这样的东西:
Size measureText(String text, float size, Font font, etc...)
我希望它返回文本周围最紧密的边界框,即(如果我们谈论的是文本的像素):
(leftest_pixel - rightest_pixel, highest_pixel - lowest_pixels)
如果文本是单行,我可以这样做:
Paint paint = new Paint();
...
paint.getTextBounds(text, 0, size, rect);
但由于文本可能有多行,我必须考虑行间距和字形下降以及所有其他字体参数......所以下一个选项是使用 StaticLayout 和 maximalLineWidth(为了断线),但StaticLayout 不计算最紧凑的框,它会在顶部和底部添加一些填充(因为它基本上是行数乘以最大行高):
例如,绿色框是用StaticLayout测量的结果,红色框是我要接收的框:
我该怎么做? 谢谢。
【问题讨论】:
-
不是答案,但您是否尝试过这里的其他 2 种方法:stackoverflow.com/a/42091739/608312
-
@JakeSteam 是的,其他方法在这里没有帮助,因为我必须使用静态布局才能打破线条
标签: android android-canvas android-graphics staticlayout