如何将TextView中的文本与Compound Drawable垂直对齐

时间:2014-09-11 14:29:40

标签: android android-layout layout textview compound-drawables

这个问题在某种程度上延续了my last question

我现在的问题几乎是一样的,除了不是在差异视图中分离图像和文本(即ImageView和TextView),我学会了我可以使用属性android:drawableLeft来设置“for”my文本(Eclipse的指示由我指出,在LinearLayout行上有一个警告图标)。

我认为唯一的区别是,不是使用setImageResource()方法设置ImageView,而是设置使用drawableLeft方法归因的TextView 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="example@gmail.com"
        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只是一个分隔符。

...这就是设置上述属性后布局的样子: (我没有足够的声誉来发布图片,所以这里是link

(为了清楚起见,这只是一个静态示例。我的文本和图像都是在运行时在代码中动态设置的。)

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:17)

android:layout_gravity="left|center_vertical"更改为android:gravity="center_vertical" layout_gravity用于在容器(布局)中定位View,而引用gravity  查看内容(在本例中为TextView中的文本)。