В настоящее время я создаю редактор изображений и пытаюсь нарисовать текст поверх изображения с помощью canvas.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 для рисования на холсте?