我在使用SwipeRefreshLayout时遇到了问题。我在布局中放置了一个列表视图,每次向上滚动列表视图时,就会触发下拉刷新布局,导致无法滚动回到布局的顶部。有人有什么想法吗?
我在使用SwipeRefreshLayout时遇到了问题。我在布局中放置了一个列表视图,每次向上滚动列表视图时,就会触发下拉刷新布局,导致无法滚动回到布局的顶部。有人有什么想法吗?
我找到了我的问题的答案。当ListView中的第一个子项位于列表顶部时,我会手动启用SwipeRefreshLayout。
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
根据上述链接的Android文档
,
此布局应作为将由手势刷新的视图的父级,并且仅支持一个直接子项。
如果ListView
是SwipeRefreshLayout
的第一个直接子项,则在滚动回到ListView
的顶部之前不会触发刷新。 在onScroll()
中无需进行任何操作。