美文网首页
关于ViewGroup点击无效的解决方案

关于ViewGroup点击无效的解决方案

作者: YanMars | 来源:发表于2018-08-28 17:25 被阅读0次

    开发中我们经常会遇到ViewGroup中添加子View,同时 也会有响应点击事件

    我们会发现当子View也添加点击事件的时候,ViewGroup可能不会全区域响应点击

    原因就是事件传递有流程

    事件模型主要涉及到3个概念:事件分发(dispatchTouchEvent),事件拦截(onInterceptTouchEvent),事件的响应(onTouchEvent)

    事件传递的顺序 : Activity -> ViewGroup -> View

    via 网络

    1、首先事件肯定先传递给ViewGroup(dispatchTouchEvent)

    2、如果父控件不拦截(onInterceptTouchEvent),分发传递给子控件(dispatchTouchEvent)

        a.如果子控件是ViewGroup,返回1

        b.如果子控件是View,响应子View (onTouchEvent)

    3、如果拦截,直接响应当前控件(onTouchEvent)

    上述是大概一个事件传递的过程,接下来我们来看一下ViewGroup 中有子View

    如果我们对这个这个控件都添加点击事件

    如果我点击按钮区域

    如果我点击蓝色区域

    这样是正常且正确的效果

    所以当你ViewGroup内部同时又子View时都需要响应点击事件,如果你的ViewGroup点击某些区域没有响应点击回调,很可能是子View响应了

    相关文章

      网友评论

          本文标题:关于ViewGroup点击无效的解决方案

          本文链接:https://www.haomeiwen.com/subject/zfhqwftx.html