无法在swipeRefreshLayout中的ListView中滚动

Vir*_*igy 14 android swipe-gesture swiperefreshlayout

我遇到了SwipeRefreshLayout的问题.我在布局中有一个列表视图,每次我在列表视图中向上滚动时,滑动刷新布局都会被触发,您永远不能滚动回到布局的顶部.有人有主意吗?

Vir*_*igy 29

我找到了一个问题的答案.当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));
        }
    });
Run Code Online (Sandbox Code Playgroud)

  • 如果ListView是SwipeLayout的唯一子节点,但如果除ListView之外还有其他视图,并且如果触摸并拉入除ListView之外的任何其他位置,您想要启用SwipeLayout,则此工作正常,则此解决方案将不行. (2认同)