繁体   English   中英

Android: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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM