Obecnie tworzę edytor obrazów i próbuję narysować tekst na górze obrazu przy użyciu canvas.drawText(). Do tej pory udało mi się to zrobić, ale gdy użytkownik wprowadzi tekst, który jest zbyt długi, tekst jest kontynuowany w jednym wierszu poza stroną i nie owija się na szerokość ekranu. Jak miałbym to zrobić? Próbowałem użyć statycznego układu, ale nie wydaje się, aby to działało, czy ktoś ma samouczek, aby to zrobić?Android drawText z zawijaniem tekstu
Moja funkcja do rysowania na płótnie przy użyciu układu statycznego:
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;
}
Ok, mam zaktualizowany mojego kodu, ale gdy próbuję zwrócić na zdjęciu nic nie dzieje się w ogóle, nie mam pojęcia dlaczego albo:
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;
}
Czy użycie gry staticlayout nie jest przeznaczone do rysowania na płótnie?
Spójrz na tej drugiej odpowiedzi na dobry przykład użytkowej 'StaticLayout's: http: //stackoverflow.com/a/8369690/293280 –
możliwy duplikat [narysuj tekst wieloliniowy na płótnie] (http://stackoverflow.com/questions/6756975/draw-multi-line-text-to-canvas) –