Центрирование текста TextView по вертикали относительно его изображения drawableLeft - PullRequest
38 голосов
/ 30 марта 2012

У меня есть этот компонент:

<TextView
    android:id="@+id/item_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:drawableLeft="@drawable/icon" />

Изображение в атрибуте drawableLeft больше шрифта текста, поэтому я хочу, чтобы текст располагался по центру по вертикали относительно изображения.Как я могу получить этот эффект?

Ответы [ 4 ]

94 голосов
/ 31 марта 2012

Вы хотите, чтобы "гравитация" заметила, что ее не следует путать с гравитацией макета, гравитация макета перемещает весь текстовый просмотр, а гравитация перемещает текст в текстовом представлении.

<TextView
    android:id="@+id/item_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:drawableLeft="@drawable/icon"
    android:gravity="center_vertical" />
49 голосов
/ 16 июля 2014

В дополнение к установке силы тяжести, это также может помочь с выравниванием в некоторых ситуациях, уменьшая отступы сверху и снизу текстового обзора, что может быть неравным:

android:includeFontPadding="false"
2 голосов
/ 06 декабря 2016

Если вас не интересуют текстовые акценты, просто попробуйте android:includeFontPadding="false". Это удалит дополнительный верхний и нижний отступы TextView.Что касается android:gravity="center_vertical", это не влияет на мой код.

0 голосов
/ 31 марта 2012

Вы должны поместить и Drawable, и TextView внутри RelativeLayout и использовать атрибут layout_alignBaseline на вашем TextView.

Вы также можете поместить только два предмета, Drawable и TextView внутри LinearLayout с ориентацией horizontal и layout_height="wrap_content" и использовать layout_gravity="center_vertical" на вашем TextView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...