Android相对位置/堆栈的许多替代品

时间:2012-04-24 15:14:27

标签: android layout

我必须将视图A放在视图B顶部,将B放在视图C顶部。

必须在可见性更改(消失)或元素删除方面表现得像一个堆栈。如果我删除B,A必须位于C之上,如果我删除C,B将移至父级的底部而A保持在B之上,如果我删除B和C,则A将移至父级的底部。 / p>

enter image description here

目前我有这个属性:

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中解决这个问题而没有嵌套布局?

1 个答案:

答案 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>