1. 程式人生 > >解決SwipeRefreshLayout與ScrollView滑動衝突

解決SwipeRefreshLayout與ScrollView滑動衝突

在頁面為了相容小螢幕裝置我們需要巢狀一個ScrollView來讓我們的佈局可以滑動,此時恰好外層使用了SwipeRefreshLayout那滑動衝突就來了,下面給出解決辦法

1.方法一:使用NestedScrollView替換ScrollView

<android.support.v4.widget.NestedScrollView
            android:id="@+id/scrollView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"

            //跟ScrollView一樣只能接受一個直接的子view
        .....
</android.support.v4.widget.NestedScrollView>

2.方法二:先將ScrollView 向上滑動一部分,然後鬆手.然後再向下滑動,此時應該是先觸發滑動事件,當ScrollView到頂部以後才觸發重新整理時間.但是此時會出現先觸發swipeRefreshLayout的問題。

scrollView.getViewTreeObserver().addOnScrollChangedListener(new  ViewTreeObserver.OnScrollChangedListener() {
        @Override
        public void onScrollChanged() {
            swipeRefreshLayout.setEnabled(scrollView.getScrollY()==0);
        }
    });