2012-09-13 24 views
2

我目前使用下面的方法来绘制一些文字给SurfaceView:的Android的drawText()中定义的矩形区域

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

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

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

"sometext" 
"text carried" 
"on" 

回答

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(); 
+0

谢谢!你可以发布一些示例代码。 –

+0

见编辑....... – DeeV

+0

你救了那个男人!谢谢! –