Холст drawtext с многострочным

Я разрабатываю приложение для комментариев. Я рисую текст в холсте с canvas.drawText(text, x, y, imgPaint);

Это появляется в одной строке. Мне нужно разбить линию на многострочную, когда текст пересекает ширину холста

заранее спасибо

Вам нужно использовать 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(); 

Вам нужно разделить линию и разделить каждый фрагмент отдельно с увеличением y на основе высоты шрифта.

Например:

 var lines = text.split("\n"), x = 100, y = 100, fHeight = 16, // get x, y and proper font or line height here i = 0, line; while(line = lines[i++]) { canvas.drawText(line, x, y, imgPaint); y += fHeight; } 
Intereting Posts