我有一个RelativeLayout
,有三个观点。 TextViews
和ImageView
都应该在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"
结果:
从第一个TextView中删除TextView
后,一切都按预期工作(除了它不是垂直的)。
为什么会这样,如何让第一个{{1}}垂直居中?
答案 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>
我希望这能解决你的问题...