Ich erstelle gerade einen Bildeditor und versuche, Text mit canvas.drawText() über das Bild zu zeichnen. Bis jetzt war ich erfolgreich dabei, aber wenn der Benutzer Text eingibt, der zu lang ist, geht der Text einfach auf einer Linie von der Seite weiter und wickelt sich nicht auf die Breite des Bildschirms ein. Wie würde ich das machen? Ich habe versucht, ein statisches Layout zu verwenden, aber es scheint nicht zu funktionieren, hat jemand ein Tutorial, um dies zu tun?Android drawText mit Textumbruch
Meine Funktion auf einer Leinwand mit statischem Layout für das Zeichnen:
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;
}
Okay, ich meinen Code aktualisiert habe, aber wenn ich versuche, passiert überhaupt auf dem Bild nichts zu zeichnen, habe ich keine Ahnung, warum entweder:
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;
}
ist staticlayout nicht verwendet werden soll auf Leinwand zeichnen?
für ein gutes Anwendungsbeispiel von 'StaticLayout's einen Blick auf diese andere Antwort nehmen: http: //stackoverflow.com/a/8369690/293280 –
mögliches Duplikat von [Zeichne mehrzeiligen Text in Canvas] (http://stackoverflow.com/questions/6756975/draw-multi-line-text-to-canvas) –