Ocultación de pie de página en ListView

Cuando se carga mi actividad, hincho un archivo de diseño que utilizo para un pie de página. Lo adjunto a ListView (addFooterView) y luego establecer su visibilidad a View.GONE. Mantengo una referencia a ella, y cuando quiero que el usuario la vea, pongo la visibilidad a View.VISIBLE.

En su mayor parte, esto funciona muy bien. Sin embargo, el pie de página parece ocupar todavía espacio. Si el usuario utiliza la rueda de desplazamiento / almohadilla, el área que el pie de página está tomando se destaca. Quisiera pulir esto más así que el pie de página es completamente ido; idealmente sin separarlo del ListView.

es posible? ¿O voy a tener que poner / desarmar el pie en lugar de simplemente cambiar su visibilidad?

Puede utilizar listView.removeFooterView(view) . La forma más sencilla de hacerlo es crear una variable de instancia para mantener su vista de pie de página inflado (por lo que sólo se infla en onCreate() ). Luego solo llame a listView.addFooterView(instanceFooter) y listView.removeFooterView(instanceFooter) según sea necesario.

Editar: Esto es lo que estoy haciendo para que esto funcione:

  1. inflar el diseño del pie de página en onCreate
  2. onResume: SI el adaptador no ha sido instanciado, llame a addFooterView() ENTONCES inicialice su adaptador (guarde una referencia de instancia a él) y llame a setAdapter() . Esto dejará el ListView "preparado"
  3. onResume: actualiza el adaptador con los datos (tengo mis datos en una clase separada) y llama a notifyDatasetChanged()
  4. Llama a removeFooterView() (lo ocultará si se está mostrando y no hace nada de lo contrario)
  5. Llame a addFooterView() si el pie de página necesita ser mostrado

Puede cambiar la visibilidad. Para hacer eso, necesitas envolver el contenido de tu pie de página usando un linearlayout, y luego establecer la visibilidad linearlayout a GONE.

En el ejemplo abajo fijé la visibilidad de LogoLinearLayout a GONE y funcionó.

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:id="@+id/LogoLinearLayout" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> <ImageView android:id="@+id/Logo" android:src="@drawable/Logo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/spacing3" android:layout_marginBottom="@dimen/spacing3" android:layout_gravity="center" /> </LinearLayout> </LinearLayout> 

Establezca el parámetro isSelectable como false cuando llama a addFooterView para deshabilitar la selección y resaltado del pie de página

Intente usar View.INVISIBLE en lugar de View.GONE. (No he probado esto, pero podría funcionar)

  • Índice de Android fuera de límites de error sin código de aplicación en el seguimiento de pila
  • Ver en Android ListView no volver a dibujar
  • Creación de un RecyclerView ampliable
  • Botón de Android en el elemento ListView para cambiar el texto en la misma fila
  • Error: java.lang.IndexOutOfBoundsException: Índice 2 no válido, tamaño es 2
  • ID de la lista no encontrada: android: list
  • Android ListView setSelectionFromTop no funciona
  • OnItemCLickListener no funciona en listview
  • Cómo limitar la selección de casilla de verificación en listview?
  • Lista de clasificación de Android en orden alfabético
  • Aplicación de la burbuja de chat de Android en ListView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.