Страница 1 из 1

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

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

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

Добавлено: 17 фев 2014, 12:26
altwin
в TextView:
[syntax=xml]android:gravity="center_horizontal|center_vertical"[/syntax]

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

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

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

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

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

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

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

Добавлено: 18 фев 2014, 16:03
gtkgroup
Разобрался, может кому пригодится.
Во-первых, этот косяк проявляется не везде, а только в версии Андроид 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
Спасибо всем откликнувшимся, удачи!