Невидимые компоненты все еще занимают место

Итак, у меня есть одно действие, которое выглядит так:

View post on imgur.com

Как вы можете видеть, у него есть кнопка, список и кнопка.

Если определенные условия выполнены, я хочу скрыть обе кнопки, просто показывая список, но, как вы можете видеть на следующем изображении, кнопки все еще занимают место:

View post on imgur.com

Итак, мой вопрос, что я могу сделать, чтобы увеличить список, чтобы снять это пространство?

Вот мой макет для кнопок и списка:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/findSelected" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="registrarAsistencia" android:text="Registrar Asistencia" /> <ListView android:id="@+id/listaAlumnos" android:layout_width="fill_parent" android:layout_height="376dp" android:layout_weight="2.29" /> <Button android:id="@+id/btnChecarBoxes" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="seleccionarTodosNinguno" android:text="Seleccionar / Deseleccionar todo" /> </LinearLayout> 

И вот это макет для содержимого списка:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:orientation="vertical" > <TextView android:id="@+id/rowTextView" android:layout_width="wrap_content" android:layout_height="match_parent" android:padding="10dp" android:textSize="16sp" android:textStyle="bold"/> <TextView android:id="@+id/rowTextView2" android:layout_width="wrap_content" android:layout_height="match_parent" android:padding="10dp" android:textSize="16sp" android:textStyle="italic"/> </LinearLayout> <CheckBox android:id="@+id/CheckBox01" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:focusable="false" android:padding="10dp" /> </RelativeLayout> 

Solutions Collecting From Web of "Невидимые компоненты все еще занимают место"

Не делайте кнопки View.INVISIBLE . Сделайте кнопки View.GONE . Существует три состояния видимости:

  • Видимый (нормальный)
  • Невидимый (пиксели не рисованы, но все еще занимают место)
  • Ушел (не включен в рендеринг)

использование

 android:layout_height="0dp" android:layout_weight="1" 

В дополнение к ответу @ CommonsWare

Вы должны использовать макет, который хорошо подходит для всех размеров экрана. Если вы дадите макет фиксированной высоты, такой как android:layout_height="376dp" он будет хорошо смотреться только на устройстве (или эмуляторе), которое вы тестируете. Что вам нужно сделать, так это убедиться, что ваше listview занимает все (и только) пространство, оставшееся от ваших кнопок.

Ознакомьтесь с этой статьей и этим ответом, чтобы лучше понять вес макета.

Для скрытия вашего виджета

  yourEditText.setVisibility(View.GONE) 

Для визуализации вашего виджета

  yourEditText.setVisibility(View.VISIBLE)