Search code examples
androidcanvasdrawtext

canvas drawtext with multiline


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


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