В классе Paint есть метод: Paint.getTextBounds(), который возвращает Rect
, занятый некоторым текстом. Но в соответствии с ответом this он возвращает что-то другое, чем ширина/высота TextView.
Q1: Есть ли способ получить ширину и высоту TextView с помощью Rect
, возвращенный Paint.getTextBounds()
Примечание. Мне нужно знать ширину/высоту точно. Я с удовольствием узнаю верхнюю границу Rect
с возможной ошибкой около 2-3%, но она ДОЛЖНА быть не больше (и должна работать на любом телефоне, не зависящем от разрешения экрана и плотности пикселей), тогда TextView ограничивает
Q2: Есть ли какой-либо другой метод QUICK для определения ширины и высоты некоторого текста с указанным textSize?
Я знаю, что ширина может быть определена Paint.measureText(), но это не возвращает высоту. Высота можно определить, создав новый StaticLayout
с текстом, а затем вызывая StaticLayout.getHeight(), но это слишком медленно. Мне нужно что-то более быстрое.
Фон для всего этого заключается в создании AutoFitTextView
, который автоматически подгоняет текст внутри своих границ с помощью размера текста вверх или вниз, и он должен делать это быстро, так как будет много таких AutoFitTextView
измененных динамически очень быстро.