首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓: drawTextOnPath multiline

安卓: drawTextOnPath multiline
EN

Stack Overflow用户
提问于 2016-05-26 06:19:53
回答 1查看 461关注 0票数 0

我当前有一个自定义视图,它覆盖了onDraw并绘制了一个圆弧。我想在这个弧线内绘制文本。为此,我使用了drawTextOnPath,它在弧线的顶部显示弯曲的文本。但是,有时文本很长,所以我想让它继续到多行。

我目前使用这样的代码来绘制多行:

代码语言:javascript
复制
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中可以使用的东西,或者可以计算可用宽度的数学方法

EN

回答 1

Stack Overflow用户

发布于 2016-05-31 20:39:18

这段代码解决了我的问题:

代码语言:javascript
复制
    PathMeasure pm = new PathMeasure(path, false);
    layout = new DynamicLayout(spannableText, spannableText, paint, (int) arcPathMeasure.getLength(), Layout.Alignment.ALIGN_CENTER, 1, 0, true);

谢谢pskink!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37448596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档