Вот подход, который я использую. Это очень просто Он использует последовательное приближение к нулю на размере шрифта и может вычислить его менее чем за 10 итераций. Просто замените «activityWidth» на ширину любого вида, который вы используете для отображения текста. В моем примере он устанавливается как частное поле для ширины экрана. Начальный размер шрифта 198 устанавливается только в том случае, если метод генерирует исключение (которое действительно никогда не должно происходить):

оптимальный способ изменить размер переноса текста вTextView так что он будет вписываться в границы getHeight и getWidth. Я не просто ищу способ обернуть текст - я хочу убедиться, что он оборачивается и достаточно мал, чтобы поместиться полностью на экране.

Я видел несколько случаев в StackOverflow, где требовалось автоматическое изменение размера, но это либо особые случаи с решениями для взлома, либо без решения, либо повторное рисованиеTextView рекурсивно до тех пор, пока он не станет достаточно маленьким (что приводит к интенсивному использованию памяти и заставляет пользователя смотреть шаг за шагом сужающийся текст при каждой рекурсии).

Но я уверен, что кто-то нашел хорошее решение, которое не включает в себя то, что я делаю: написание нескольких сложных процедур, которые анализируют и измеряют текст, изменяют размер текста и повторяют до тех пор, пока не будет найден достаточно маленький размер.

Какие процедуры делаетTextView использовать для переноса текста? Разве их нельзя как-то использовать, чтобы предсказать, будет ли текст достаточно маленьким?

ТЛ; др: есть ли лучший способ автоматического изменения размераTextView вписаться, обернутый в его границы getHeight и getWidth?

Ответы на вопрос(30)

Ваш ответ на вопрос