SwipeRefreshLayout嵌套ViewPager等产生的滑动冲突

当使用SwipeRefreshLayout的时候,如果内部嵌套了ViewPager等类似横向滑动的View,会产生滑动冲突,需要重写SwipeRefreshLayout.

private int mTouchSlop;
private float mPrevX;

public CustomSwipeToRefresh(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 = MotionEvent.obtain(event).getX();
            break;

        case MotionEvent.ACTION_MOVE:
            final float eventX = event.getX();
            //获取水平移动距离
            float xDiff = Math.abs(eventX - mPrevX);
            //当水平移动距离大于滑动操作的最小距离的时候就认为进行了横向滑动
            //不进行事件拦截,并将这个事件交给子View处理
            if (xDiff > mTouchSlop) {
                return false;
            }
    }

    return super.onInterceptTouchEvent(event);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,073评论 25 709
  • Android 事件分发和滑动冲突都是开发中经常遇到的难点问题,遇到问题时可能会通过 Google 或者 Stac...
    任教主来也阅读 7,638评论 0 24
  • 上一篇文章我们讲述了Android View事件分发机制。如果你对View的事件分发还不熟悉,建议先去看一下 一文...
    Flyzend阅读 30,994评论 30 184
  • 目录:不长不短,刚好刻骨铭心 上一章:隐世堂(前) 文/陈康慧 车子照常行驶着,穿过笔直的马路,走进了一片郁郁葱葱...
    陈康慧阅读 2,900评论 20 16
  • 今天看了一部电影,名字叫《阿郎的故事》,这是周润发很早的时候拍的电影了,以前只是听说过但是没看过,今天一看,竟然让...
    九月西阅读 2,828评论 0 2

友情链接更多精彩内容