Provare l'approccio menzionato seguente ..
Android ListView#addHeaderView
e ListView#addFooterView
i metodi sono strani: devi aggiungere le viste dell'intestazione e del piè di pagina prima di impostare l'adattatore di ListView in modo che ListView possa prendere in considerazione intestazioni e piè di pagina - altrimenti otterrai un'eccezione. Qui aggiungiamo una ProgressBar (filatore) come headerView:
// filatore è un ProgressBar
listView.addHeaderView(spinner);
Vorremmo essere in grado di mostrare e nascondere quel filatore a volontà, ma la rimozione a titolo definitivo è pericoloso, perché non saremmo mai in grado di aggiungere di nuovo senza distruggere il ListView - ricordate, non possiamo addHeaderView dopo che abbiamo è l'adattatore:
listView.removeHeaderView(spinner); //dangerous!
Quindi cerchiamo di nasconderlo! Risulta anche difficile. Solo nascondendo la vista dello spinner si ottiene un'area dell'intestazione vuota, ma ancora visibile.
Ora provate a nascondere il filatore:
spinner.setVisibility(View.GONE);
Risultato: area di intestazione ancora visibile con uno spazio brutta:
La soluzione è quello di mettere il progresso barra in un LinearLayout che avvolge il suo contenuto e nasconde il contenuto.In questo modo il LinearLayout incarto collasserà quando il suo contenuto è nascosto, risultando in un headerView tecnicamente ancora presente, ma 0dip alta:
<LinearLayout
xmlns:a="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<!-- simplified -->
<ProgressBar
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
Quindi impostare il layout come intestazione:
spinnerLayout = getLayoutInflater().inflate(R.layout.header_view_spinner, null);
listView.addHeaderView(spinnerLayout);
e quando abbiamo bisogno di nasconderlo, nascondere il contenuto del layout di, non il layout:
spinnerLayout.findViewById(R.id.spinner).setVisibility(View.GONE);
Ora il colpo di testa scompare dalla vista. Niente più brutti spazi in alto!
è possibile eliminare vista intestazione se si dispone di una variabile per puntare a intestazione, si veda questo link: http://stackoverflow.com/a/39286390/1817569 – Hamid