当我们将RelativeLayout
尺寸(宽度或高度)设置为wrap_conent
,然后尝试将子视图与另一个居中子视图对齐时,会出现问题。
在下面的示例中,我们有3个RL:
layout_height="wrap_content"
layout_height="100dp"
每个人都有:
layout_centerVertical="true"
)alignBottom
到红色方块(android:layout_alignBottom="@id/red"
)正如您所看到的,第一行的绿色方块位置错误。
类似的情况是横向尺寸和定位。
我知道当我们将其中一个尺寸设置为RelativeLayout
时,wrap_content
会有一些限制,但我一直认为它仅适用于直接定位到父级的位置:
请注意,您不能在RelativeLayout的大小与其子项的位置之间存在循环依赖关系。例如,您不能将RelativeLayout的高度设置为WRAP_CONTENT,将子级设置为ALIGN_PARENT_BOTTOM。
我知道,他们使用嵌套容器很多,但是当我们为列表项创建布局时,它应该尽可能平坦。
我错过了什么吗?
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#0ff">
<View
android:id="@+id/red1"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_centerVertical="true"
android:background="#f00"/>
<View
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignBottom="@id/red1"
android:layout_alignRight="@id/red1"
android:background="#0f0"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/red1"
android:text="Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies. Curabitur et ligula. Ut molestie a, ultricies porta."/>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="#f0f">
<View
android:id="@+id/red2"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_centerVertical="true"
android:background="#f00"/>
<View
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignBottom="@id/red2"
android:layout_alignRight="@id/red2"
android:background="#0f0"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/red2"
android:text="Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies. Curabitur et ligula. Ut molestie a, ultricies porta."/>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ff0">
<View
android:id="@+id/red3"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_centerVertical="true"
android:background="#f00"/>
<View
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignBottom="@id/red3"
android:layout_alignRight="@id/red3"
android:background="#0f0"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/red3"
android:text="Lorem ipsum dolor sit amet enim."/>
</RelativeLayout>
</LinearLayout>