我当前有一个自定义视图,它覆盖了onDraw并绘制了一个圆弧。我想在这个弧线内绘制文本。为此,我使用了drawTextOnPath,它在弧线的顶部显示弯曲的文本。但是,有时文本很长,所以我想让它继续到多行。
我目前使用这样的代码来绘制多行:
textView.getPaint().getTextBounds(s, 0,
s.length(), r);
int yOffset=r.height() + textSpacing;
int textStart=0;
int numberOfLines= (int) (r.width()/arcWidth) + 1;
for (int i=0; i < numberOfLines; i ++) {
canvas.drawTextOnPath(s.substring(textStart, textStart + s.length() / numberOfLines),
childHolder.path, 0, yOffset, paint);
yOffset+=r.height() +textSpacing;
textStart=s.length()/numberOfLines;
} 然而,这显然没有考虑到文本在弧线下的宽度。有没有一种方法可以通过使用统计布局/动态布局来做到这一点(文本确实会发生很大的变化)。
如果有人可以告诉我android SDK中可以使用的东西,或者可以计算可用宽度的数学方法
发布于 2016-05-31 20:39:18
这段代码解决了我的问题:
PathMeasure pm = new PathMeasure(path, false);
layout = new DynamicLayout(spannableText, spannableText, paint, (int) arcPathMeasure.getLength(), Layout.Alignment.ALIGN_CENTER, 1, 0, true);谢谢pskink!
https://stackoverflow.com/questions/37448596
复制相似问题