SwipeRefreshLayout 下拉刷新控件 会和左右滑动的控件 发生冲突
然后下面重写了一下 SwipeRefreshLayout 增加点容差让下拉刷新在竖直滑动时可以触发刷新
/**
* 作者: CoolTone
* 描述: 只能竖值方向才能下拉刷新的控件
*/
public class VerticalSwipeRefreshLayout extends SwipeRefreshLayout {
private int mTouchSlop;
// 上一次触摸时的X坐标
private float mPrevX;
public VerticalSwipeRefreshLayout(Context context, AttributeSet attrs) {
super(context, attrs);
// 触发移动事件的最短距离,如果小于这个距离就不触发移动控件
mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mPrevX = event.getX();
break;
case MotionEvent.ACTION_MOVE:
final float eventX = event.getX();
float xDiff = Math.abs(eventX - mPrevX);
// Log.d("refresh" ,"move :" + eventX + " " + mPrevX + " " + mTouchSlop);
// 增加60的容差,让下拉刷新在竖直滑动时就可以触发
if (xDiff > mTouchSlop + 60) {
return false;
}
}
return super.onInterceptTouchEvent(event);
}
}