Эквивалент CoreText IOS»в Android является drawText
API, часть класса Canvas, Canvas.drawText()
, Canvas.drawPosText()
и т.д. см javadoc для холста более подробно. Эти графические API используют Skia внизу.
Функциональность, предоставляемая этими графическими API-интерфейсами, не такая же, как в iOS, скажем, что нет эквивалента CTFramesetter
, который поможет вам разрисовать текст и разрывать разрывы строк для вас. С API drawText
вы можете рисовать только одну строку за раз, вам придется самостоятельно обрабатывать разрывы строк. Это похоже на использование CTTypesetter
в iOS. Для оформления текста см. Paint.breakText
и Paint.measureText
.
Для изменения размера шрифта & font face, вы можете установить связанные атрибуты в объекте Paint
, который передается как последний параметр в API drawText
.
Отрывок:
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setTextSize(14);
String text = "Hello world!";
canvas.drawText(text, 0, 100, paint);
Примечание: Система координат, используемая в API для Android drawText
от left-top
угла.
В iOS CoreText сообщает точное количество текста, которое будет отображаться на определенном кадре. Эта функция очень важна, так как приложение может размещать несколько кадров, размещенных на ScrollView, с разбивкой по страницам. Может ли TextView сделать то же самое на Android? – javsmo
@javsmo: Не то, чтобы я знал. Единственный текстовый текст, который я видел на Android, - это электронные книги, в которых будут использоваться HTML и WebView. – CommonsWare
@CommonsWare, не совсем, большинство читателей книг используют холст и API-интерфейсы drawText, я когда-то реализовал программу чтения электронных книг, все было бы намного более управляемым с помощью API-интерфейсов drawText. – neevek