我目前正在使用以下方法将一些文本绘制到SurfaceView:
canvas.drawText("someText", 0, 0, paint);
然而,如果文字超出屏幕宽度怎么办?是否可以定义可以绘制文本的区域?
所以现在当字符串的宽度超过矩形宽度时,文本将被格式化为适合上面的文本,例如。
"sometext"
"text carried"
"on"
答案 0 :(得分:0)
基于this answer,我相信这就是Layout子类的用途。每个文档:
管理视觉元素中文本布局的基类 屏幕。
对于要编辑的文本,请使用DynamicLayout 随着文本的变化而更新。对于不会更改的文本,请使用 StaticLayout。
每个子类都有一个注释:
窗口小部件使用它来控制文本布局。您不应该直接使用此类,除非您实现自己的窗口小部件或自定义显示对象,或者想要直接调用Canvas.drawText()。
这听起来和你正在做的完全一样。
它基本上是canvas.drawText()
的替代品。它可以这种方式使用:
TextPaint tPaint = new TextPaint(paint);
StaticLayout sLayout = new StaticLayout(sText, tPaint, mWidth, widthToFill, Layout.Alignment.ALIGN_CENTER, 1.2f, 1.0f, false);
canvas.save();
canvas.translate(posX, posY);
sLayout.draw(canvas);
canvas.restore();