隐藏/显示布局困难

时间:2013-07-19 15:07:09

标签: android android-layout android-linearlayout relativelayout

我有三个RelativeLayout的subLinearlayout。我隐藏并以编程方式显示同一RelativeLayout下的所有三个布局。

在所有上述三个subLinearlayout中,第一个Linearlayout内容与其他两个内容相比较大。因此,当我显示第二个LinearLayout时,它也会占据第一个LinearLayout的空间。

我想在显示第二个LinearLayout时删除FirstLinear Layout的占用空间。

为了更好地理解我粘贴我的xml布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/white" >

   <!-- ATC/TCAS/AIRSPACE -->

    <LinearLayout
        android:id="@+id/atcTypeLinear"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="15dp"
        android:orientation="horizontal"
        android:visibility="gone" >

        <include
            android:id="@+id/atcType"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            layout="@layout/atc_incident_type" />
    </LinearLayout>

    <!-- Evacuation -->

    <LinearLayout
        android:id="@+id/mainEvoccutionLinear"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="15dp"
        android:orientation="horizontal"
        android:visibility="gone" >

        <LinearLayout
            android:id="@+id/evocutionLinear"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Emergencies /Evacuation"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:textColor="@android:color/black"
                android:textStyle="bold" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:drawableRight="@drawable/editable"
                android:text="Details  "
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:textColor="@android:color/black"
                android:textStyle="bold" />

            <!-- Dyanmic check Box -->
        </LinearLayout>

        <LinearLayout
            android:id="@+id/secEvoLinear"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="100dp"
            android:layout_marginTop="25dp"
            android:orientation="vertical" >

            <!-- Dyanmic check Box -->
        </LinearLayout>
    </LinearLayout>
    <!-- Evolution layout over and start of collision near miss -->

    <LinearLayout
        android:id="@+id/collisionNearLinear"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="15dp"
        android:orientation="vertical"
        android:visibility="gone" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:drawableRight="@drawable/editable"
            android:text="Collision/Near Miss  "
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="@android:color/black"
            android:textStyle="bold" />

        <!-- dynamic creation of check box -->
    </LinearLayout>
</RelativeLayout>

请大家帮助我..

2 个答案:

答案 0 :(得分:0)

使用RelativeLayout时,您需要向孩子们添加一些额外的属性,以告诉Android你想要他们如何布局。您有两个可能的选项,RelativeLayout和LinearLayout;

的RelativeLayout

请注意,为了简洁起见,我错过了您的其他属性,但仍应将其包括在内。关键部分是android:layout_below属性。如果您不包含它们,那么视图就会像您已经观察到的那样彼此重叠。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/white" >

    <LinearLayout
        android:id="@+id/atcTypeLinear"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        ...

    </LinearLayout>

    <LinearLayout
        android:id="@+id/mainEvoccutionLinear"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/atcTypeLinear" >

        ...

    </LinearLayout>

    <LinearLayout
        android:id="@+id/collisionNearLinear"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/mainEvoccutionLinear" >

        ...

    </LinearLayout>

</RelativeLayout>

的LinearLayout

另一种选择就是使用LinearLayout作为父级。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/white" >

    <LinearLayout
        android:id="@+id/atcTypeLinear"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        ...

    </LinearLayout>

    <LinearLayout
        android:id="@+id/mainEvoccutionLinear"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        ...

    </LinearLayout>

    <LinearLayout
        android:id="@+id/collisionNearLinear"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        ...

    </LinearLayout>

</LinearLayout>

答案 1 :(得分:0)

谢谢你们的回复。 我无法相信,我在.java我的布局setVisibility属性中向INVISIBLE而不是GONE犯了一个愚蠢的错误。我很抱歉。接受我的答案。 而且Thanx再次帮助我。 :)