在view.setVisibility(View.GONE)和view.setVisibility(View.VISIBLE)之后刷新RelativeLayout

Mar*_*rek 5 java layout android visibility relativelayout

请查看下图以了解问题:

在此输入图像描述

正如你所看到的,有一个RelativeLayout持有自定义ViewLinearLayout.
在它们之间,还有另一个View,它Visibility被设定为GONE.现在,当我按下时Button,我想将该GONE视图的可见性更改为VISIBLE,并重新排列RelativeLayout,以便第三个View在自定义View和自定义之间LinearLayout.当我按下另一个按钮时,我想再次进行第三次观看GONE.我怎样才能做到这一点?

这是我的XML:

<view
    android:id="@+id/CanvasView"
    android:layout_width="200dp"
    android:layout_height="40dp"
    android:layout_above="@+id/HorizontalScrollView"
    android:layout_centerHorizontal="true"
    android:layout_margin="0dp"
    android:layout_marginBottom="0dp"
    android:layout_marginTop="0dp"
    class="com.example.CanvasView"
    android:orientation="vertical" />

<HorizontalScrollView
    android:id="@+id/HorizontalScrollView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_above="@+id/linearLayout2"
    android:clickable="false"
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:visibility="gone" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clickable="false"
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:orientation="horizontal" >

    //SOME BUTTONS HERE
    </LinearLayout>

</HorizontalScrollView>

<LinearLayout
    android:id="@+id/linearLayout2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_marginTop="5dp" >

    <Button
        android:id="@+id/button1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical|center_horizontal"
        android:layout_weight="0.4"
        android:maxWidth="200dp"
        android:text="Clear"
        android:textColor="@android:color/white"
        android:textSize="20sp" />

    <Button
        android:id="@+id/settingsButton"
        android:layout_width="44dp"
        android:layout_height="44dp"
        android:layout_gravity="center_vertical|center_horizontal"
        android:background="@drawable/settings_button_selector" />

    <Button
        android:id="@+id/button2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical|center_horizontal"
        android:layout_weight="0.4"
        android:enabled="false"
        android:maxWidth="200dp"
        android:text="Recognize"
        android:textColor="@android:color/white"
        android:textSize="20sp" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

如果我只在OnClick()方法中设置第三个视图的可见性,它将出现在LinearLayout上方,它将覆盖自定义视图(我之前尝试过).换句话说,它不会移动RelativeLayout.

Ale*_*ier 12

findViewById(R.id.button1).setOnClickListener(new OnClickListener(){
     public void onClick(View v) {
         findViewById(R.id.hiddenview).setVisibility(View.GONE);
         findViewById(R.id.relativelayout).invalidate();
     }
});
findViewById(R.id.button2).setOnClickListener(new OnClickListener(){
     public void onClick(View v) {
         findViewById(R.id.hiddenview).setVisibility(View.VISIBLE);
         findViewById(R.id.relativelayout).invalidate();
     }
});
Run Code Online (Sandbox Code Playgroud)