我遇到了 SwipeRefreshLayout 的问题。我在布局中有一个列表视图,每次我在列表视图中向上滚动时,都会触发滑动以刷新布局,并且您永远无法滚动回布局的顶部。有人有想法么?
问问题
8743 次
2 回答
29
我找到了我的问题的答案。当列表视图中的第一个子项位于列表顶部时,我正在手动启用 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));
}
});
于 2014-11-20T15:10:34.153 回答
4
https://developer.android.com/reference/android/support/v4/widget/SwipeRefreshLayout.html
根据Android docs
上面的链接,
此布局应作为将因手势刷新的视图的父级,并且只能支持一个直接子级。
如果ListView
是 的第一个直接子级,则SwipeRefreshLayout
在滚动回 . 的顶部之前不会触发刷新ListView
。您无需在onScroll()
.
于 2015-06-03T04:30:27.610 回答