android:layout_below没有正常工作

时间:2014-12-12 17:10:41

标签: android

我有一个RelativeLayout,有三个观点。 TextViewsImageView都应该在TextView的右边,而第二个应该在第一个<RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#bdbdbd" android:paddingBottom="15dp" android:paddingLeft="5dp" android:paddingRight="5dp" android:paddingTop="15dp" > <ImageView android:id="@+id/avatar" android:layout_width="64dp" android:layout_height="64dp" android:layout_centerVertical="true" android:src="@drawable/default_avatar" /> <TextView android:id="@+id/username" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_toRightOf="@id/avatar" android:text="Chris" android:textSize="16sp" android:textStyle="bold" /> <TextView android:id="@+id/university" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/username" android:layout_toRightOf="@id/avatar" android:text="Oxford" android:textSize="13sp" /> </RelativeLayout> 之下。

代码:

android:layout_centerVertical="true"

结果:enter image description here

从第一个TextView中删除TextView后,一切都按预期工作(除了它不是垂直的)。 enter image description here

为什么会这样,如何让第一个{{1}}垂直居中?

4 个答案:

答案 0 :(得分:6)

由于某种原因,RelativeLayout的高度参数给出了问题。尝试将其设置为94dp(图像的64位+底部填充的15位+顶部填充的15位)。这应该可以解决问题

答案 1 :(得分:2)

@f。德是对的。问题是android:layout_height="wrap_content",因为相对布局的高度决定了我的内容,根据它的高度不能正常工作将其内容设置为垂直居中。您需要将此设置为match_parent或固定值。

答案 2 :(得分:1)

您还可以将您的数据包装在另一个RelativeLayout或其他任何ViewGroup内的名称和大学中,并使其与中心对齐。

喜欢那个

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#bdbdbd"
    android:paddingBottom="15dp"
    android:paddingLeft="5dp"
    android:paddingRight="5dp"
    android:paddingTop="15dp">

    <ImageView
        android:id="@+id/avatar"
        android:layout_width="64dp"
        android:layout_height="64dp"
        android:layout_centerVertical="true"
        android:src="@drawable/default_avatar" />

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginLeft="5dp"
        android:layout_marginStart="5dp"
        android:layout_toEndOf="@id/avatar"
        android:layout_toRightOf="@id/avatar">

        <TextView
            android:id="@+id/username"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Chris"
            android:textSize="16sp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/university"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/username"
            android:text="Oxford"
            android:textSize="13sp" />
    </RelativeLayout>
</RelativeLayout>

这对于对相关视图(TextViews)进行分组是有意义的,并且它产生更好的结果,因为整个容器对齐中心,在您的初始示例中,名称视图垂直居中但其他视图在其下方并且使其看起来不是如果容器的基线是容器的中心,那就好了。

答案 3 :(得分:0)

由于尝试将两个TextView中心垂直放置,因此它们重叠。使用padding属性有利。 因此,要根据需要对齐它们,请使用此代码。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#bdbdbd"
    android:paddingBottom="15dp"
    android:paddingLeft="5dp"
    android:paddingRight="5dp"
    android:paddingTop="15dp" >

<ImageView
    android:id="@+id/avatar"
    android:layout_width="64dp"
    android:layout_height="64dp"
    android:layout_centerVertical="true"
    android:src="@drawable/default_avatar" />

<TextView
    android:id="@+id/username"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_toRightOf="@id/avatar"
    android:text="Chris"
    android:paddingBottom="7dp"
    android:textSize="16sp"
    android:textStyle="bold" />

<TextView
    android:id="@+id/university"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/username"
    android:layout_toRightOf="@id/avatar"
    android:paddingTop="7dp"
    android:text="Oxford"
    android:textSize="13sp" />
</RelativeLayout>

我希望这能解决你的问题...