2012-04-22 6 views

Antwort

5

Das entspricht iOS‘Core in Android ist der drawText APIs, einen Teil der Canvas-Klasse, Canvas.drawText(), Canvas.drawPosText() usw. javadoc für Leinwand siehe für weitere Einzelheiten. Diese Grafik-APIs verwenden Skia darunter.

Die Funktionalitäten, die diese Grafik-APIs bieten, sind nicht die gleichen wie in iOS, sagen wir, es gibt kein CTFramesetter Äquivalent, das Ihnen hilft, Text zu formatieren und Zeilenumbrüche zu erledigen. Mit den drawText APIs können Sie nur eine Zeile auf einmal zeichnen, müssen Sie Zeilenumbrüche selbst behandeln, Es ist wie CTTypesetter in iOS verwenden. Zum Auslegen von Text siehe Paint.breakText und Paint.measureText.

Für Schriftgröße & Schriftart ändern, können Sie ähnliche Attribute im Paint Objekt festgelegt, die als letzte Parameter an die drawText APIs übergeben wird.

Schnipsel:

Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); 
paint.setTextSize(14); 
String text = "Hello world!"; 
canvas.drawText(text, 0, 100, paint); 

Hinweis: Das System in den APIs Android drawText verwendet Koordinate von left-top Ecke.

1

TextView kann "die Fähigkeit, Formatierung, Schriftgröße und Schriftart Gesicht zu ändern", über spannbare Zeichenfolgen. Im Paket android.text.style finden Sie die verschiedenen Effekte, die Sie anwenden können.

In Bezug auf "enorme Mengen an Text", wickeln Sie die TextView in eine ScrollView.

Sie können immer wieder auf WebView zurückgreifen, was Ihnen vollständige WebKit-Funktionen zum Rendern von HTML bietet, falls erforderlich.

+1

In iOS gibt CoreText die genaue Menge an Text an, die in einem bestimmten Frame angezeigt werden würde. Diese Funktion ist sehr nützlich, da die Anwendung mehrere Frames in einer ScrollView platziert und den Text paginieren kann. Könnte TextView das gleiche für Android tun? – javsmo

+0

@javsmo: Nicht, dass ich mir dessen bewusst bin. Der einzige paginierte Text, den ich auf Android gesehen habe, ist mit Ebook-Readern, die HTML und 'WebView' verwenden. – CommonsWare

+1

@CommonsWare, nicht wirklich, die meisten Ebook-Reader verwenden Canvas und die DrawText-APIs, ich habe einmal einen Ebook-Reader implementiert, die Dinge wären viel kontrollierbar mit den DrawText-APIs. – neevek