Подтвердить что ты не робот

Как вертикально выровнять текст в TextView с помощью Compound Drawable

Этот вопрос является способом продолжения моего последнего вопроса.

Моя проблема сейчас почти такая же, за исключением того, что вместо разделения изображения и текста в разных вариантах (а именно ImageView и TextView) я узнал, что могу использовать атрибут android:drawableLeft для установки изображения "для" моего текста ( предложение было указано на Eclipse с предупреждающим значком на линии LinearLayout).

Я думал, что единственное отличие заключается в том, что вместо установки ImageView с помощью метода setImageResource() я просто установил TextView drawableLeft, приписываемый методу setCompoundDrawablesWithIntrinsicBounds(). Вместо этого, когда я внес изменения, я был возвращен к исходной проблеме: текст выравнивается с верхним краем представления, а не с центром.

Вот как выглядит мой TextView:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    >       
    <TextView 
        android:id="@+id/account_login"
        android:layout_marginTop="10dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:drawableLeft="@drawable/pm_gmail"
        android:drawablePadding="8dp"
        android:text="[email protected]"
        android:paddingLeft="16dp"
        android:layout_gravity="left|center_vertical" />

    <View
        android:layout_width="fill_parent"
        android:layout_height="1dip"
        android:layout_centerVertical="true"
        android:layout_below="@id/account_login"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:layout_marginTop="5dp"
        android:background="#DDDDDD" />

</RelativeLayout>

Второй View является просто разделителем.

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

(Просто, чтобы быть ясным, это только статический пример. Мой текст и изображение устанавливаются динамически в коде во время выполнения).

Любая помощь очень ценится.

4b9b3361

Ответ 1

Измените android:layout_gravity="left|center_vertical" на android:gravity="center_vertical".
layout_gravity предназначен для позиционирования вида внутри контейнера (макета), а gravity -  Содержимое представления (то есть в этом случае текст внутри TextView).