canvas drawtext with multiline

android, canvas, drawtext

Solution

You need to use `StaticLayout`:

TextPaint mTextPaint=new TextPaint();
StaticLayout mTextLayout = new StaticLayout("my text\nNext line is very long text that does not definitely fit in a single line on an android device. This will show you how!", mTextPaint, canvas.getWidth(), Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);

canvas.save();
// calculate x and y position where your text will be placed

textX = 100;
textY = 100;

canvas.translate(textX, textY);
mTextLayout.draw(canvas);
canvas.restore();

Problem

I am developing a image commenting application. I draw text in canvas with `canvas.drawText(text, x, y, imgPaint);` This appears in a single line. I need to break the line to multiline when the text crosses the canvas width Thanks in advance

Original source