Измените размер текста в кнопке Android, если текст слишком длинный

#android #button

#Android #кнопка

Вопрос:

У меня есть кнопки с фиксированным размером, но текст время от времени меняется. Иногда текст слишком длинный, чтобы поместиться на кнопке, и в этих случаях я хочу использовать меньший размер текста.

Как я могу изменить размер текста кнопки, если текст слишком длинный?

(Одним из решений может быть проверка количества символов, которые можно использовать с обычным размером текста, а затем изменение размера текста, если длина больше этой базовой линии. Но я надеялся на более динамичный подход.)

Ответ №1:

1) Измерьте кнопку. 2) Используя тот же шрифт, используйте Paint.getTextBounds(), чтобы получить ширину. 3) Сравните размер кнопки с шириной. Вероятно, вам потребуется добавить дополнительное пространство с обеих сторон для заполнения, но в любом случае это будет немного приблизительная оценка. 4) Если текст был слишком большим, уменьшите размер текста (на объекте рисования) и перейдите к 2. 5) Теперь, когда у вас есть рабочий размер, вызовите setTextSize на кнопке.

Примечание: если вы делаете это для AlertDialog, вам нужно сделать это после того, как кнопка существует — у меня были проблемы с шагом 1 в зависимости от того, куда я поместил эту функцию, но это было так давно, что я забыл точную проблему. Я думаю, что я должен был сделать это после вызова show?

Ответ №2:

Вы можете расширить класс Button до чего-то похожего на AutoFitTextView

Комментарии:

1. @EirikO пожалуйста, отметьте ответ, если он вам помог.