Форум программистов, компьютерный форум CyberForum.ru

Уменьшение размера шрифта Textview, если не влезает по длине или высоте - Android

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.95
R13
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 4
28.03.2014, 07:31     Уменьшение размера шрифта Textview, если не влезает по длине или высоте #1
TextView в режиме width=match_parent, height=match_parent, то есть растянут на весь активити.
Задача уместить текст с заведомо огромным размером шрифта на экране в одну строчку путём уменьшения размера, если не входит по длине или высоте.

Для выполнения условия по высоте нашлось довольно простое решение:
Код
if (TextView.getTextSize() > TextView.getHeight())
          {TextView.setTextSize(TextVIew.getHeight()-25);
А вот с выполнением условия по длине ума не приложу, что нужно закодить. Вернее была попытка в стиле:
Если количество строк стало 2, то уменьшать размер экрана до тех пор, пока не станет 1 строка
Код
while (tTemper.getLineCount() > 1) {
 tTemper.setTextSize(tTemper.getTextSize()-10); }
Но этот метод работает коряво, иногда текст становится в одну строку, но при этом часть его не видно. Плюс почему-то уменьшение размера срабатывает только 1 раз.
В textview выводится банальная температура.

Подскажите, пожалуйста, решение вопроса
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2014, 07:31     Уменьшение размера шрифта Textview, если не влезает по длине или высоте
Посмотрите здесь:

Увеличение или уменьшение по клику Android
Android TextView question
Изменение размера шрифта в стиле программно Android
Swipe к TextView или Button Android
Android Текст из TextView перенести в другой TextView по нажатию Button
TextView txt = new TextView(this); - ошибка Android
Диначеское изменение вышины компонента (размера шрифта) Android
Как из кода узнать размер шрифта TextView Android
Уменьшение размера файла картинки Android
автоматическое изменение размера шрифта Android
TextView бд Android
Android Размер шрифта, TextView

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,488
28.03.2014, 09:43     Уменьшение размера шрифта Textview, если не влезает по длине или высоте #2
Самому интересно подобное... Возможно помогу так: Есть параметр позмволяющий НЕ ПЕРЕНОСИТЬ строку!
android:lines="1" - фиксируем на одной
android:maxLines="3" - не больше 3х линий
Если получится - отпишитесь пожалуста! Самому подобное нужно....
R13
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 4
28.03.2014, 12:30  [ТС]     Уменьшение размера шрифта Textview, если не влезает по длине или высоте #3
а что это дает? выставляешь 1 строку, текст благополучно скрывается за правой границей экрана.

есть подозрение, что нужно перехватывать событие метода ellipsize и вместо добавления ".." производить уменьшение шрифта. но мои знания, как это реализовать на java пока близки к 0. опять же не знаю, к какому параметру можно привязать длину текста (но не textview.width, который по умолчанию равен длине экрана, даже если сам текст убежал за границу экрана)
R13
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 4
02.04.2014, 12:19  [ТС]     Уменьшение размера шрифта Textview, если не влезает по длине или высоте #4
Такой вот костыль соорудил. В моем случае работает как и хотел.
К проверке высоты/длины добавил плотность экрана, иначе на фуллхд экранах шрифт увеличивался вместо уменьшения, так как 1 dp=2px.
Код
Float dens = getResources().getDisplayMetrics().density;
if (TextView.getTextSize() > TextView.getHeight())   	  
          {TextView.setTextSize((TextView.getHeight()/dens)-25);
 }
Проверка по длине: размер шрифта умножается на 2/3 (примерное соотношение длины к высоте) и на длину строки. Дальше дело техники.

Код
if (TextView.getTextSize()*2/3*(TextView.length()-1) > TextView.getWidth())
          {
        	  TextView.setTextSize(((TextView.getWidth()-10)*3/2/(TextView.length()-1)/dens));
          }
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,488
02.04.2014, 17:20     Уменьшение размера шрифта Textview, если не влезает по длине или высоте #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Находил еще подобное... может поможет!
http://www.gkproggy.com/2013/01/draw...font-size.html
... костыли - штука класная, но часто не надежная или сильно прыгает от устройства(диагональ, версия, прошивка), размера шрифта, названия шрифта...
Yandex
Объявления
02.04.2014, 17:20     Уменьшение размера шрифта Textview, если не влезает по длине или высоте
Ответ Создать тему
Опции темы

Текущее время: 18:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru