Como señaló @YoniSamlan, se puede lograr de una manera sencilla. Tienes que especificar
android:layout_height="wrap_content"
en ViewGroup que contiene el botón "Cargar más". No tiene que ser FrameLayout, vea a continuación un ejemplo simple de trabajo que usa LinearLayout.
Ambas imágenes muestran una pantalla que se desplaza hasta el final. 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 colapsa si configura la visibilidad del botón en GONE.
Puede volver a mostrar el pie de página (dentro de alguna devolución de llamada) cambiando la visibilidad:
loadMore.setVisibility(View.VISIBLE); // set to View.GONE to hide it again
Realice la inicialización de listView como de costumbre
mListView = (ListView) root.findViewById(R.id.reservations_search_results);
mListView.setEmptyView(root.findViewById(R.id.search_reservations_list_empty));
footerView = ((LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE))
.inflate(R.layout.load_more_footer_view, null, false);
loadMore = footerView.findViewById(R.id.load_more);
loadMore.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
fetchData();
}
});
mListView.addFooterView(footerView);
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"/>