我想計算一個多行文本段落的寬度。據我所知,唯一可以在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);
}
}
您是否試過'Paint.measureText()'? – neevek
http://stackoverflow.com/questions/7549182/android-paint-measuretext-vs-gettextbounds – nullpotent
@Neevek它會產生相同的結果,但最重要的是它無法測量多行文本。 – Moritz