0

ビュー A をビュー B の上に、ビュー B をビュー C の上に配置する必要があります。

可視性の変更 (なくなった) または要素の削除時にスタックのように動作する必要があります。B を削除すると、A は C の上にある必要があります。C を削除すると、B は親の下に移動し、A は B の上に保持されます。B と C を削除すると、A は親の下に移動します。

ここに画像の説明を入力

現在、私はこの属性を持っています:

子:

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 でこれを解決する方法はありますか?

4

1 に答える 1

1

RelativeLayout を使用する代わりにできることは、layout_weight を 1 に設定した 4 番目のビューで LinearLayout を使用することです。

<?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>
于 2012-04-24T15:34:43.807 に答える