【发布时间】:2015-01-18 10:07:09
【问题描述】:
我遇到了 SwipeRefreshLayout 的问题。我在布局中有一个列表视图,每次我在列表视图中向上滚动时,都会触发滑动以刷新布局,并且您永远无法滚动回布局的顶部。有人有什么想法吗?
【问题讨论】:
标签: android swipe-gesture swiperefreshlayout
我遇到了 SwipeRefreshLayout 的问题。我在布局中有一个列表视图,每次我在列表视图中向上滚动时,都会触发滑动以刷新布局,并且您永远无法滚动回布局的顶部。有人有什么想法吗?
【问题讨论】:
标签: android swipe-gesture swiperefreshlayout
我找到了我的问题的答案。当列表视图中的第一个子项位于列表顶部时,我手动启用 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 docs,
此布局应作为将因手势刷新的视图的父级,并且只能支持一个直接子级。
如果ListView 是SwipeRefreshLayout 的第一个直接子级,则在滚动回ListView 的顶部之前不会触发刷新。你不需要在onScroll()做任何事情。
【讨论】: