Android当另一个视图的可见性从变为可见时,向下滑动视图

时间:2015-09-15 17:33:45

标签: android view visibility

我有一个视图,其可见性设置为大部分时间(视图A)和其下方的另一个视图始终可见(视图b),有时视图A视图设置为从某些条件可见,发生这种情况时,View B将不可见(主要是因为View A在出现时阻止了它)。我想知道系统是否有办法在视图B出现时将视图B重新定位到视图A下方。

<RelativeLayout
    android:id="@+id/require_info"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
<LinearLayout
        android:id="@+id/payment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:visibility="gone">

        <View
            android:layout_width="fill_parent"
            android:layout_height="0.2dp"
            android:layout_marginTop="10dp"
            android:background="#c0c0c0" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="15dp"
            android:text="@string/quantity_label"
            android:textSize="10sp"
            android:textStyle="bold" />
</LinearLayout>
<LinearLayout
        android:id="@+id/contact_info"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/payment"
        android:orientation="vertical">

        <TextView
            android:id="@+id/contact_label"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Contact Information"
            android:textColor="#90CAF9"
            android:textSize="15sp" />
</LinearLayout>
</RelativeLayout>

3 个答案:

答案 0 :(得分:0)

如果您View A上的View B高于LinearLayout,当您将A和B都设置为可见时,带有重绘的布局,您会看到{{1}上面View A。确保您的View BLinearLayout orientation

答案 1 :(得分:0)

您实际上需要将第一个LinearLayout的高度更改为&#34; wrap_content&#34;它目前设置为&#34; match_parent&#34;。因此,如果您使View A可见,它将获取屏幕上的整个可用空间,并且您的View B永远不会出现。

答案 2 :(得分:0)

线性布局适合您的设计。以下示例显示了您如何做到这一点。

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:orientation="vertical"
    >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/linearLayout"
        android:orientation="vertical"
        android:visibility="visible"
        android:layout_weight="0.5"
        >
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button1"
            android:id="@+id/button" />
    </LinearLayout>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/linearLayout2"
        android:visibility="visible"
        android:layout_weight="0.5"
        >
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button2"
            android:id="@+id/button2" />
    </LinearLayout>
</LinearLayout>

在上面,当您尝试制作可见的第一个线性布局并隐藏第二个线性布局时,可见的布局将采用全屏,反之亦然。如果将两个布局都设置为可见,则布局可以正确显示(第一个布局及其下面的第二个布局)。