RelativeLayout is updated after view.setVisibility (View.GONE) and view.setVisibility (View.VISIBLE)

Please look at the following image to understand the problem:

enter image description here

As you can see, there is a RelativeLayout that contains custom View and LinearLayout .
Between them there is another View for which Visibility set to GONE . Now, when I click the Button , I would like to change the visibility of this GONE View to VISIBLE and rebuild the RelativeLayout so that the third View will be between the custom View and LinearLayout . When I press another button, I would like to make the third look GONE again. How can i achieve this?

Here is my 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> 

If I set only one of the values โ€‹โ€‹of the third view in the OnClick () method, it will appear above LinearLayout and impose a custom view on it (I tried it before). In other words, it will not move the RelativeLayout up.

+4
source share
2 answers
 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(); } }); 
+11
source

In your onClick() activity, get an instance of this GONE View.VISIBLE so that it reappears between the two views.

  viewName.setVisibility(View.VISIBLE); 

For this, that between VIEW should already be present in xml, just by default it is GONE !

-1
source

Source: https://habr.com/ru/post/1489034/


All Articles