Центрирование текста TextView по вертикали относительно его рисунка drawableLeft
У меня есть этот компонент:
<TextView
android:id="@+id/item_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/icon" />
Изображение в атрибуте drawableLeft больше, чем шрифт текста, поэтому я хочу, чтобы текст был центрирован по вертикали относительно изображения. Как я могу получить этот эффект?
Ответы
Ответ 1
Вы хотите, чтобы "гравитация" означала, что это не следует путать с гравитацией макета, гравитация макета перемещает весь текст, а гравитация перемещает текст в текстовом представлении.
<TextView
android:id="@+id/item_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/icon"
android:gravity="center_vertical" />
Ответ 2
В дополнение к настройке силы тяжести это также может помочь с выравниванием в некоторых ситуациях, уменьшая прокладки сверху и снизу текста, что может быть неравным:
android:includeFontPadding="false"
Ответ 3
Если вам не android:includeFontPadding="false"
текстовые акценты, просто попробуйте android:includeFontPadding="false"
Это позволит удалить дополнительное верхнее и нижнее дополнение TextView
. Что касается android:gravity="center_vertical"
, это не влияет на мой код.
Ответ 4
Вы должны разместить как Drawable
и TextView
внутри RelativeLayout
и использовать атрибут layout_alignBaseline
в TextView
.
Вы также можете разместить только два элемента: Drawable
и TextView
внутри LinearLayout
с horizontal
ориентацией и layout_height="wrap_content"
и использовать layout_gravity="center_vertical"
в вашем TextView
.