I've got a view that is effectively is a button. Here is its XML layout (add_new.xml)
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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" android:orientation="horizontal"> <Button android:id="@+id/buttonNew" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/bText" android:onClick="addNew"/> </LinearLayout>
When I set its visibility to GONE like this
v = getActivity().getLayoutInflater().inflate(R.layout.add_new, null); v.setVisibility(View.GONE);
it disappears but still occupies space. Like this:
This button is a header in the ListView
, which is defined by this xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/porno" > <ImageView android:id="@+id/icon" android:layout_width="30dp" android:layout_height="40dp" android:layout_marginLeft="4dp" android:layout_marginRight="10dp" android:layout_marginTop="4dp" android:src="@drawable/ic_launcher"> </ImageView> <TextView android:id="@+id/label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@+id/label" android:textSize="20dp" > </TextView> </LinearLayout>
And I dont want it to occupy an additional list item when its visibility is set to GONE. As it is stated in the documentation.
GONE - This view is invisible, and it doesn't take any space for layout purposes.
Any ideas on how to make it NOT occupy space?
Thanks, Dennis xx
P.S. My listview is inside of a FoldersFragment ListFragment
and here is the xml of my MainActivity where FoldersFragment is presented
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <fragment android:id="@+id/foldersFragment" android:layout_width="200dip" android:layout_height="match_parent" class="com.example.fragments.FoldersFragment" > </fragment> <fragment android:id="@+id/detailFragment" android:layout_width="match_parent" android:layout_height="match_parent" class="com.example.fragments.DetailFragment" > </fragment> </LinearLayout>
use setVisibility method. for hiding button you can use button. setVisibility(View. GONE);.. you can use View.
This is an Android bug in my opinion, we just fix this issue doing this:
<FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:id="@+id/layout_to_hide" android:layout_width="match_parent" android:layout_height="wrap_content"> //Put here your views </LinearLayout> </FrameLayout>
Just hide LinearLayout with id LAYOUT_TO_HIDE with Visible.GONE
and then root FrameLayout will collapse its height giving you a "hidden" with non-blank-space header.
set layout_width
and layout_height
to 0
where you want to hide item, by doing this
//if item's parent layout is LinearLayout, change according to your item xml holder.itemView.setLayoutParams(new LinearLayout.LayoutParams(0,0));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With