[英]How to alter the output of Android Canvas.drawTextOnPath()
[英]Android: drawTextOnPath multiline
我目前有一个自定义视图,可以覆盖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;
}
但是,这显然没有考虑到文本沿弧线的宽度。 有没有办法通过使用诸如staticlayout / dynamiclayout之类的方法来做到这一点(文本确实发生了很多变化)。
如果有人可以指出我可以使用的Android SDK中的内容,还是可以通过数学计算出可用宽度
这段代码解决了我的问题:-
PathMeasure pm = new PathMeasure(path, false);
layout = new DynamicLayout(spannableText, spannableText, paint, (int) arcPathMeasure.getLength(), Layout.Alignment.ALIGN_CENTER, 1, 0, true);
谢谢pskink!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.