我必须将视图A放在视图B顶部,将B放在视图C顶部。
必须在可见性更改(消失)或元素删除方面表现得像一个堆栈。如果我删除B,A必须位于C之上,如果我删除C,B将移至父级的底部而A保持在B之上,如果我删除B和C,则A将移至父级的底部。 / p>
目前我有这个属性:
C:
android:id="@+id/C"
android:layout_alignParentBottom="true"
B:
android:id="@+id/B"
android:layout_above="@id/C"
android:layout_alignWithParentIfMissing="true"
A:
android:layout_above="@id/B"
android:layout_alignWithParentIfMissing="true"
但我需要类似“如果有B,在它上方对齐,如果没有,在C顶部对齐,如果不对齐父母的底部”。
有没有办法在XML中解决这个问题而没有嵌套布局?
答案 0 :(得分:1)
你可以做的,而不是使用RelativeLayout,是使用一个第四个视图的LinearLayout,其layout_weight设置为1。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<View
android:id="@+id/spacer"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#000000" />
<View
android:id="@+id/A"
android:layout_width="fill_parent"
android:layout_height="30dip"
android:background="#FF0000" />
<View
android:id="@+id/B"
android:layout_width="fill_parent"
android:layout_height="30dip"
android:background="#00FF00" />
<View
android:id="@+id/C"
android:layout_width="fill_parent"
android:layout_height="30dip"
android:background="#0000FF" />
</LinearLayout>