解決listview與SwipeRefreshLayout滑動衝突問題

最近使用SwipeRefreshLayout時經常遇見內部嵌套listView,但是listView往下拉的時候與SwipeRefreshLayout衝突,好像事件被攔截了,直接開始刷新了,記得以前解決過,但是忘記了,今天特意記下來。作爲一個菜鳥,用了最笨的辦法解決:

 lvList.setOnScrollListener(new AbsListView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {

            }

            @Override
            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
                boolean enable = false;
                if(lvList != null && lvList.getChildCount() > 0){
                    // 檢查第一個item是否可見
                    boolean firstItemVisible = lvList.getFirstVisiblePosition() == 0;
                    // 檢查第一個item是否完全顯示
                    boolean topOfFirstItemVisible = lvList.getChildAt(0).getTop() == 0;
                    // 如果第一個item可見並且完全顯示  則設置refreshLayout可用  否則不可用
                    enable = firstItemVisible && topOfFirstItemVisible;
                }
                refreshLayout.setEnabled(enable);
            }
        });

完美解決,應該還有其他解決方法,但是這個應該是最好理解的,對新手來說,暫時記住這個就可以了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章