我是Canvas和Paint的首发。我想在Canvas中绘制文本,但它可能比原始Bitmap更长。所以文本出了位图。
是否有某种自动管理器可以在到达终点时创建新行?或者我应该玩高度和距离?感谢
答案 0 :(得分:4)
是的,您可以使用StaticLayout或DynamicLayout
进行管理答案 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。