RelativeLayout中心垂直

use*_*561 83 android center android-relativelayout

我想制作列表行布局.此布局最左侧是图像视图,图像视图旁边是文本视图,最右侧是图像视图.我希望他们都是中心垂直的.

<RelativeLayout
    android:layout_width="fill_parent" android:layout_height="100dp"
    android:gravity="center_vertical"
    >
    <ImageView 
        android:id="@+id/icon"
        android:layout_width="50dp" android:layout_height="50dp"
        android:layout_gravity="center_vertical" />
    <TextView 
        android:id="@+id/func_text" android:layout_toRightOf="@id/icon"
        android:layout_width="wrap_content" android:layout_height="100dp"
        android:layout_gravity="center_vertical" />
    <ImageView 
        android:layout_width="50dp" android:layout_height="50dp"
        android:layout_alignParentRight="true"
        android:layout_gravity="center_vertical"
        android:src="@drawable/arrow" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

我也尝试添加android:layout_centerVertical="true"到textview,但结果是textview对齐底部与两个imageview.我在android 4.2模拟器中试过这个.有人可以帮我这个吗?

sti*_*ike 178

使用

 android:layout_centerVertical="true"
Run Code Online (Sandbox Code Playgroud)

  • 这应该是正确的答案,因为RelativeLayout没有layout_gravity属性. (29认同)

Suj*_*ith 76

我已经编辑了你的布局.现在检查此代码.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#33B5E5"
android:padding="5dp" >

<ImageView
    android:id="@+id/icon"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_alignParentLeft="true"
    android:layout_centerInParent="true"
    android:background="@android:drawable/ic_lock_lock" />

<TextView
    android:id="@+id/func_text"
    android:layout_width="wrap_content"
    android:layout_height="100dp"
    android:layout_gravity="center_vertical"
    android:layout_toRightOf="@+id/icon"
    android:gravity="center"
    android:padding="5dp"
    android:text="This is my test string............"
    android:textColor="#FFFFFF" />

<ImageView
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_alignParentRight="true"
    android:layout_centerInParent="true"
    android:layout_gravity="center_vertical"
    android:src="@android:drawable/ic_media_next" />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)


ful*_*oon 18

如果View的高度/宽度= wrap_content

使用:

android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
Run Code Online (Sandbox Code Playgroud)

如果View的高度/宽度= match_parent

使用:

android:gravity="center_vertical|center_horizontal"
Run Code Online (Sandbox Code Playgroud)


hid*_*dro 8

尝试对齐顶部和文本视图在图标的一个底部,这将使文本视图共享相同的高度,他们,然后设置gravity,以center_vertical使垂直文本视图中心内的文本.

<TextView 
        android:id="@+id/func_text" android:layout_toRightOf="@id/icon"
        android:layout_alignTop="@id/icon" android:layout_alignBottom="@id/icon"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:gravity="center_vertical" />
Run Code Online (Sandbox Code Playgroud)


Vil*_*usK 7

对我来说,我不得不删除

<item name="android:gravity">center_vertical</item>
Run Code Online (Sandbox Code Playgroud)

来自RelativeLayout,所以孩子们的配置会起作用:

<item name="android:layout_centerVertical">true</item>
Run Code Online (Sandbox Code Playgroud)