Sto riscontrando un problema con SwipeRefreshLayout. Ho una vista elenco all'interno del layout e ogni volta che si scorre verso l'alto nella visualizzazione elenco, lo scorrimento per aggiornare il layout è tigger e non è mai possibile tornare alla parte superiore del layout. Qualcuno ha qualche idea?Impossibile scorrere in un ListView in un swipeRefreshLayout
risposta
Ho trovato una risposta alla mia domanda. Sto abilitando manualmente swipeRefreshLayout quando il primo figlio in listview è in cima alla lista.
listView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView listView, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
int topRowVerticalPosition = (listView == null || listView.getChildCount() == 0) ?
0 : expandableListview.getChildAt(0).getTop();
refresh.setEnabled((topRowVerticalPosition >= 0));
}
});
https://developer.android.com/reference/android/support/v4/widget/SwipeRefreshLayout.html
Secondo Android docs
al link qui sopra,
Questo layout dovrebbe essere il genitore del parere che verrà aggiornato a seguito del gesto e può solo supporto un bambino diretto
Se il ListView
è il figlio diretto prima della SwipeRefreshLayout
, di aggiornamento non sarà attivato prima di scorrere di nuovo alla parte superiore del ListView
. Non devi fare nulla in onScroll()
.
Tt è l'unico figlio nella vista. La soluzione di cui sopra ha funzionato per me però. – VirtualProdigy
Grazie Sviluppatore emergente Android, il frammento di cui sopra ha risolto il problema !!! –
Grazie, ho lo stesso problema con Api 10 ... non è in Apis più recente. Sembra essere un bug – Mate
La stessa soluzione, solo un po 'più facile da leggere qui alla fine del post: https://yassirh.com/2014/05/how-to-use-swiperefreshlayout-the-right-way/ –