Нет вертикального выравнивания текста в TextView

Интерфейс, диалоги, темы, стили, меню
Ответить
gtkgroup
Сообщения: 5
Зарегистрирован: 26 янв 2012, 11:18

Нет вертикального выравнивания текста в TextView

Сообщение gtkgroup » 17 фев 2014, 11:16

Может кто сталкивался с такой проблемой и знает решение?
Когда из программы уменьшаешь размер шрифта tv.setTextSize(font), то видно, что размер текста уменьшился, а вот выравнивание текста по вертикали не произошло, хотя tv.Gravity=Gravity.CENTER и в LinearLayout.LayoutParams.Gravity=center
Как сделать выравнивание?

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Нет вертикального выравнивания текста в TextView

Сообщение altwin » 17 фев 2014, 12:26

в TextView:
[syntax=xml]android:gravity="center_horizontal|center_vertical"[/syntax]
Изображение

gtkgroup
Сообщения: 5
Зарегистрирован: 26 янв 2012, 11:18

Re: Нет вертикального выравнивания текста в TextView

Сообщение gtkgroup » 17 фев 2014, 13:28

altwin писал(а):в TextView: android:gravity="center_horizontal|center_vertical"
Это дает выравнивание на начальном этапе, когда программу запустили.
А потом, когда программно уменьшаем размер шрифта, то текст, уменьшаясь в размере, остается на уровне нижней линии текста.
Хотя теоретически, если текст стал меньше в размере, то он занимает меньше места по вертикали и следовательно он должен подняться чуть вверх, чтобы сохранить вертикальное выравнивание.
Или я ошибаюсь?

парень
Сообщения: 223
Зарегистрирован: 30 мар 2013, 22:52

Re: Нет вертикального выравнивания текста в TextView

Сообщение парень » 17 фев 2014, 16:02

Мне обычно дает помощь в просмотре границ эллементов - фишка в телефоне-настройки-для разработчиков-расширенные-показать границы макета. Тогда я вижу границы какого эллемента не так расположины как я планирую и исправляю.
Мой первенец: MyMoney. Менеджер расходов

Бьем рекорды русских топов :)

Могу ответить на любые вопросы по маркетингу и развитию.

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Нет вертикального выравнивания текста в TextView

Сообщение altwin » 17 фев 2014, 20:46

gtkgroup писал(а):
altwin писал(а):в TextView: android:gravity="center_horizontal|center_vertical"
Это дает выравнивание на начальном этапе, когда программу запустили.
А потом, когда программно уменьшаем размер шрифта, то текст, уменьшаясь в размере, остается на уровне нижней линии текста.
Хотя теоретически, если текст стал меньше в размере, то он занимает меньше места по вертикали и следовательно он должен подняться чуть вверх, чтобы сохранить вертикальное выравнивание.
Или я ошибаюсь?
попробуйте сделать тоже самое но программно, т.е. после того, как изменяете размер шрифта вызовите метод: yourTextView.setGravity(Gravity.CENTER_VERTICAL)
Изображение

gtkgroup
Сообщения: 5
Зарегистрирован: 26 янв 2012, 11:18

Re: Нет вертикального выравнивания текста в TextView

Сообщение gtkgroup » 18 фев 2014, 16:03

Разобрался, может кому пригодится.
Во-первых, этот косяк проявляется не везде, а только в версии Андроид ICS.
Во-вторых для его устранения надо к тексту добавить непечатный символ
Выглядит это так:
Код
final String DOUBLE_BYTE_WORDJOINER = "\u2060";
text.setText(text + DOUBLE_BYTE_WORDJOINER);

Проверяя рекомендацию, я обнаружил, что DOUBLE_BYTE_WORDJOINER увеличивает ширину текста, поэтому нашел ему замену в виде "\u200B" или "\uFEFF" (оба символа имеют нулевую ширину)
Теперь выравнивание по вертикали работает на все 100%

Источник: https://code.google.co…issues/detail?id=22493
Спасибо всем откликнувшимся, удачи!

Ответить