自定义View滑动冲突处理

最近在做一个自定义View是用来滑动选取颜色的大致如下:

在普通情况下滑动没有问题,但是在和ViewPager嵌套使用时,发现不流畅,时常滑着滑着就变成ViewPager的滑动了,进过打点分析发现onTouchEvent方法经常走MotionEvent.ACTION_CANCEL事件导致的,原来是ViewPager会接入这个滑动事件导致的,后来发现系统的Seekbar不会出现这样的问题,仔细找了下原因发现SeekBar父类里面有如下代码:

/**
     * Tries to claim the user's drag motion, and requests disallowing any
     * ancestors from stealing events in the drag.
     */
    private void attemptClaimDrag() {
        if (mParent != null) {
            mParent.requestDisallowInterceptTouchEvent(true);
        }
    }

方法是用来子View告诉父容器不要拦截我们的事件的。原来问题出在这,所以我们只要在onTouchEvent方法的MotionEvent.ACTION_DOWN MotionEvent.ACTION_MOVE: 这两个事件中调用这个方法就可以啦。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是View View 是 Android 中所有控件的基类。 View的位置参数 View 的位置由它的四个顶...
    acc8226阅读 1,209评论 0 7
  • Android 事件分发和滑动冲突都是开发中经常遇到的难点问题,遇到问题时可能会通过 Google 或者 Stac...
    任教主来也阅读 2,709评论 0 24
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,983评论 25 708
  • 特训人员:特维斯,莱特 地点:上海卢湾体育场 温度:17度 时间:18:40 - 19:40 课表:M60 总结:...
    陈吟书阅读 216评论 0 0
  • 我幻想中的毕业应该是穿着学士服戴着学士帽,摆着枯燥无味的剪刀手,但我错了~~~这些都并没有,我们有红毯,签名墙以及...
    兔子168阅读 265评论 0 1