Android drawText()在定义的矩形区域中

时间:2012-09-13 17:20:02

标签: android android-canvas

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

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

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

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

"sometext"
"text carried"
"on"

1 个答案:

答案 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();