Como señaló @YoniSamlan, se puede lograr de una manera sencilla. Debe especificar
android:layout_height="wrap_content"
en el Grupo de visualización que contiene el botón "Cargar más". No tiene que ser FrameLayout, ver abajo un ejemplo simple de trabajo que usa LinearLayout.
Ambas imágenes muestran una pantalla que se desplaza hasta la parte inferior. El primero tiene un pie de página visible que envuelve el botón "cargar más". Las segundas imágenes muestran que el pie de página se derrumba si configura la visibilidad del botón en GONE.
Puede mostrar de nuevo el pie de página (dentro de algunas de devolución de llamada) cambiando la visibilidad:
loadMore.setVisibility(View.VISIBLE); // set to View.GONE to hide it again
realizar la inicialización Listview como de costumbre
// Find View, set empty View if needed
mListView = (ListView) root.findViewById(R.id.reservations_search_results);
mListView.setEmptyView(root.findViewById(R.id.search_reservations_list_empty));
// Instantiate footerView using a LayoutInflater and add to listView
footerView = ((LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE))
.inflate(R.layout.load_more_footer_view, null, false);
// additionally, find the "load more button" inside the footer view
loadMore = footerView.findViewById(R.id.load_more);
loadMore.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
fetchData();
}
});
// add footer view to the list
mListView.addFooterView(footerView);
// after we're done setting the footerView, we can setAdapter
adapter = new ReservationsArrayAdapter(getActivity(), R.layout.list_item_reservations_search, reservationsList);
mListView.setAdapter(adapter);
load_more_footer_view.xml
<?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="wrap_content">
<Button
android:id="@+id/load_more"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="9dp"
android:gravity="center"
android:layout_gravity="center"
android:background="@drawable/transparent_white_border"
android:textColor="@android:color/white"
android:text="@string/LOAD_MORE"/>
Esto no parece funcionar para Encabezados. Puedo agregar un pie de página después de setAdapter, pero no un encabezado. – cottonBallPaws
+1 para ahorrar un ENORME dolor de cabeza. Me pregunto cuánto tiempo me habría llevado imaginar que tenía que agregar el pie de página antes de configurar el adaptador. (tonto) –
Me he dado cuenta de que la posición de desplazamiento se restablece cuando quita la de abajo, por lo que cuando se desplaza en exceso -> se quita el pie de página antes de terminar de desplazar, vuelve al final de la lista. ¿Te encontraste con esto? – Vadi