在页面为了兼容小屏幕设备我们需要嵌套一个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);
}
});