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); }}
新闻热点
疑难解答