В настоящее время я создаю редактор изображений и пытаюсь нарисовать текст поверх изображения с помощью canvas.drawText(). До сих пор мне это удалось, но когда пользователь вводит слишком длинный текст, текст просто продолжается в одной строке на странице и не привязывается к ширине экрана. Как мне это сделать? Я пробовал использовать статический макет, но не могу заставить его работать, есть ли у кого-нибудь учебник для этого?Android drawText, включая перенос текста
Моя функция для рисования на холсте, используя статический макет:
public Bitmap createImage(float scr_x,float scr_y,String user_text){
Canvas canvas = new Canvas(image);
scr_x = 100;
scr_y = 100;
final TextPaint tp = new TextPaint(Color.WHITE);
canvas.save();
StaticLayout sl = new StaticLayout("" + user_text, tp, originalBitmap.getWidth(), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);
sl.draw(canvas);
return image;
}
Хорошо, я обновил свой код, но когда я пытаюсь рисовать на изображении ничего не происходит вообще, я понятия не имею, почему либо:
public Bitmap createImage(String user_text) {
// canvas object with bitmap image as constructor
Canvas canvas = new Canvas(image);
TextPaint tp = new TextPaint();
tp.setColor(Color.RED);
tp.setTextSize(50);
tp.setTextAlign(Align.CENTER);
tp.setAntiAlias(true);
StaticLayout sl = new StaticLayout("" + user_text, tp,
canvas.getWidth(), Layout.Alignment.ALIGN_NORMAL, 1, 0, false);
canvas.translate(100, 100);
sl.draw(canvas);
return image;
}
Является ли staticlayout не предназначен для использования на холсте?
Взгляните на этот другой ответ на хороший пример использования в 'StaticLayout's: HTTP: //stackoverflow.com/a/8369690/293280 –
Возможный дубликат [Рисовать многострочный текст на холст] (http://stackoverflow.com/questions/6756975/draw-multi-line-text-to-canvas) –