我正在尝试计算多行文本段落的宽度。据我所知,在 Android 中唯一可以做到这一点的类是 StaticLayout(或 DynamicLayout)类。当使用这个类时,我没有得到我的文本片段的正确长度,而是测量的尺寸有时更小,有时更大,具体取决于文本大小。
所以我基本上是在寻找一种可靠地测量多行文本字符串宽度的方法。
下图显示了测量的宽度如何与各种文本大小的实际文本长度不同。
屏幕截图是在自定义视图中运行以下代码创建的:
@Override
protected void onDraw( Canvas canvas ) {
for( int i = 0; i < 15; i++ ) {
int startSize = 10;
int curSize = i + startSize;
paint.setTextSize( curSize );
String text = i + startSize + " - " + TEXT_SNIPPET;
layout = new StaticLayout( text,
paint,
Integer.MAX_VALUE,
Alignment.ALIGN_NORMAL,
1.0f,
0.0f,
true );
float top = STEP_DISTANCE * i;
float measuredWidth = layout.getLineMax( 0 );
canvas.drawRect( 0, top, measuredWidth, top + curSize, bgPaint );
canvas.drawText( text, 0, STEP_DISTANCE * i + curSize, paint );
}
}