15

我遇到了 SwipeRefreshLayout 的问题。我在布局中有一个列表视图,每次我在列表视图中向上滚动时,都会触发滑动以刷新布局,并且您永远无法滚动回布局的顶部。有人有想法么?

4

2 回答 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 回答