我正在使用 在画布上绘制多行文本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
with maximalLineWidth
(为了换行),但StaticLayout
不计算最紧凑的盒子,它会在顶部和底部添加一些填充(因为它基本上是行数乘以最大行高):
例如,绿色框是测量的结果,StaticLayout
红色框是我想要接收的框:
我该怎么做?谢谢。