Search code examples
androidandroid-relativelayout

Align the views in relativelayout after enabling and disabling the textviews


Have a relative layout with some views (textviews, edittext and button). When viewing and hiding the textview, the layout not moving up. While hiding the view (textview.setVisibility(View.INVISIBLE)) it create blank space instead of pushing the view up.

Layout file

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <RelativeLayout
            android:id="@+id/layout1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            >

            <TextView
                android:id="@+id/text1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="text1"
                android:padding="20dp"/>

            <TextView
                android:id="@+id/text2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="text2"
                android:layout_below="@id/text1"
                android:padding="20dp"/>

            <TextView
                android:id="@+id/text3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="text3"
                android:layout_below="@id/text2"
                android:padding="20dp"/>

            <TextView
                android:id="@+id/text4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="text4"
                android:layout_below="@id/text3"
                android:padding="20dp"/>

            <TextView
                android:id="@+id/text5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="text5"
                android:layout_below="@id/text4"
                android:visibility="gone"
                android:padding="20dp"/>

        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/layout2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/layout1">

            <EditText
                android:id="@+id/edittext1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="20dp"/>

            <EditText
                android:id="@+id/edittext2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/edittext1"
                android:padding="20dp"/>

            <EditText
                android:id="@+id/edittext3"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/edittext2"
                android:padding="20dp"/>

            <EditText
                android:id="@+id/edittext4"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/edittext3"
                android:padding="20dp"/>

        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/layout3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/layout2">

            <Button
                android:id="@+id/enable"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="20dp"
                android:layout_margin="10dp"
                android:text="Enable"/>

            <Button
                android:id="@+id/disable"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="20dp"
                android:layout_below="@id/enable"
                android:layout_margin="10dp"
                android:text="disable"/>



        </RelativeLayout>

    </RelativeLayout>

</ScrollView>

Activity file

public class SampleTransparent extends AppCompatActivity {

Button btn_enable, btn_disable;
TextView textView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout3);

    btn_enable = findViewById(R.id.enable);
    btn_disable = findViewById(R.id.disable);
    textView = findViewById(R.id.text5);

    btn_enable.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            textView.setVisibility(View.VISIBLE);
        }
    });

    btn_disable.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            textView.setVisibility(View.INVISIBLE);
        }
    });
}

Before Enabling view

Before Enabling View

After enabling and disabling the view

After enabling and disabling the view


Solution

  • View.GONE This view is invisible, and it doesn't take any space for layout purposes.

    View.INVISIBLE This view is invisible, but it still takes up space for layout purposes.

    btn_disable.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                textView.setVisibility(View.GONE);
            }
        });