How to show/hide grouped views in Android?

前端 未结 2 1349
无人共我
无人共我 2021-02-08 20:55

I want to create an activity such as mentioned in photo... as soon as I press the maximize button I want it to become full screen for the activity and part 1 become minimize, an

相关标签:
2条回答
  • 2021-02-08 21:39

    There is a bit simplified solution, than Diego Palomar produced, without using additional variable. I'll take his code to show:

        public class MyActivity extends Activity implements OnClickListener { 
    
        private View mViewGroup;
        private Button mButton;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    
            mViewGroup = findViewById(R.id.viewsContainer);
    
            mButton = findViewById(R.id.button);
            mButton.setOnClickListener(this);
        }
    
    
        @Override
        public void onClick(View button) {
    
        if (mViewGroup.getVisibility() == View.VISIBLE) {
            mViewGroup.setVisibility(View.GONE);
            mButton.setText("Show");
        } else {
            mViewGroup.setVisibility(View.VISIBLE);
            mButton.setText("Hide");
        }
    
    }
    
    0 讨论(0)
  • 2021-02-08 21:43

    Part one and two should be in their own layout. After, play with the visilibity property of each layout. Specifically to hide any view without it continues to occupy its space, use the value gone for the visibility property.

    Ok, here I go. Below you have a complete example of how to hide/show grouped views.

    main.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    
        <LinearLayout
            android:id="@+id/viewsContainer"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:padding="5dp" >
    
            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="TextBox One" />
    
            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="5dp"
                android:text="TextBox Two" />
    
            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="5dp"
                android:text="TextBox Three" />
        </LinearLayout>
    
        <Button
            android:id="@+id/button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:text="Hide" />
    
    </RelativeLayout>
    

    Activity

    public class MyActivity extends Activity implements OnClickListener {
    
        private boolean viewGroupIsVisible = true;  
    
        private View mViewGroup;
        private Button mButton;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    
            mViewGroup = findViewById(R.id.viewsContainer);
    
            mButton = findViewById(R.id.button);
            mButton.setOnClickListener(this);
        }
    
    
        @Override
        public void onClick(View button) {
    
        if (viewGroupIsVisible) {
            mViewGroup.setVisibility(View.GONE);
            mButton.setText("Show");
        } else {
            mViewGroup.setVisibility(View.VISIBLE);
            mButton.setText("Hide");
        }
    
        viewGroupIsVisible = !viewGroupIsVisible;
    }
    

    I hope this helps ;)

    0 讨论(0)
提交回复
热议问题