在画布中绘制文本和多行

时间:2012-02-03 13:54:03

标签: java android paint android-canvas

我是Canvas和Paint的首发。我想在Canvas中绘制文本,但它可能比原始Bitmap更长。所以文本出了位图。

是否有某种自动管理器可以在到达终点时创建新行?或者我应该玩高度和距离?感谢

3 个答案:

答案 0 :(得分:4)

是的,您可以使用StaticLayoutDynamicLayout

进行管理

答案 1 :(得分:0)

我建议您也查看此处的代码段: https://stackoverflow.com/a/15092729/1759409

因为它将管理文本在特定宽度和高度内的书写,并自动正确地绘制到画布上。

答案 2 :(得分:0)

最好的方法是使用StaticLayout绘制文本:

// init StaticLayout for text
StaticLayout textLayout = new StaticLayout(
  gText, paint, textWidth, Layout.Alignment.ALIGN_CENTER, 1.0f, 0.0f, false);

// get height of multiline text
int textHeight = textLayout.getHeight();

// get position of text's top left corner
float x = (bitmap.getWidth() - textWidth)/2;
float y = (bitmap.getHeight() - textHeight)/2;

// draw text to the Canvas center
canvas.save();
canvas.translate(x, y);
textLayout.draw(canvas);
canvas.restore();

有关详细信息,请参阅my blogpost