Framelayout变得不可见但仍然占据空间

时间:2018-06-18 06:40:03

标签: android visibility android-framelayout

我有一个xml文件,我从java端管理framelayout的可见性。 xml在linearlayout上有2个framelayout作为按钮。方向是horizental。一旦我隐藏了右边的第一个按钮,左边的一个按住了他的位置,但它应该向右移动。

任何想法如何解决这个问题?

这是我的xml代码:

  <LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_gravity="bottom|end">

    <FrameLayout
        android:id="@+id/btn1"
        android:layout_width="75dp"
        android:layout_height="75dp"
        android:background="@drawable/float_button"
        android:visibility="gone">
        <ImageView

            android:layout_width="25dp"
            android:layout_height="25dp"
            android:layout_gravity="center"
            android:id="@+id/icon2" />
    </FrameLayout>

    <FrameLayout
        android:id="@+id/btn2"
        android:layout_width="75dp"
        android:layout_height="75dp"
        android:background="@drawable/float_button"
        android:visibility="gone">
        <ImageView
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:layout_gravity="center"
            android:id="@+id/icon1"
            >

        </ImageView>
    </FrameLayout>
</LinearLayout>

我的java代码:

@Override
    public void notifyLayoutReady() {
        mHandler.post(new Runnable() {
            @Override
            public void run() {
                if (showUserOption("option1"))
                    mBtn1.setVisibility(View.VISIBLE);
                if (showUserOption("option2"))
                    mBtn2.setVisibility(View.VISIBLE);
            }
        });
    }

2 个答案:

答案 0 :(得分:1)

似乎在点击按钮并设置您使用View.INVISIBLE的可见性时,请尝试使用View.GONE

答案 1 :(得分:0)

它使用了两种方法来进入不可见的实体..

        android:visibility="invisible"

或将重力设置为如下布局..

        android:layout_gravity="left"
        android:layout_gravity="right"

两个帧布局都因为删除了所有空格而且不可见只隐藏视图但空间仍然存在。