美文网首页
关于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