2

我目前正在使用以下方法将一些文本绘制到 SurfaceView:

canvas.drawText("someText", 0, 0, paint);

但是,如果文本超出屏幕宽度怎么办?是否可以定义一个可以绘制文本的区域?

所以现在当字符串的宽度超过矩形宽度时,文本将被格式化以适合上面的文本等等,例如。

"sometext"
"text carried"
"on"
4

1 回答 1

1

基于这个答案,我相信这就是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();
于 2012-09-13T18:15:43.563 回答