Android 事件分发面试题2
问:LinearLayout 里面嵌套Button,LinearLayout 设置了onClick 事件,但是Button 没有设置点击事件,当我点击Button 的时候,LinearLayout 的onClick 会不会执行?
答:不会执行,虽然View 的onTouch 对于Action_Down 事件,只要是ClickAble 的控件,默认是返回true,在Action_Up的时候,由于LinearLayout 没有拦截后续事件,所以后续所有的事件还是被Button 给消费了。所以,只有设置了Button的clickable 为false,这样点击Button 就不会消费事件。
从源码里面也会看到,就算是Button 处理了Action_Down,如果父容器对与后续的Action_MOVE 没有拦截,那么当Action_Up 的时候,就算Button 自己不处理,那么ViewGroup 也不会处理。
也就是如果在Action_Down 的时候,父亲不拦截事件,子View onTouchEvent 返回了true, 接着在
Action_Move 的时候,父亲还不拦截事件,那么Action_Up 事件 最终子View 有没有消费,父亲也不管了,只负责传递。
Action_Down 负责分发决定哪个控件处理本次事件,在Move 时,只可能存在拦截的可能,不存在再次分发事件的可能。一个View 在Activon_Down 的时候,可以返回true,表示我要处理这次事件,但是在Move 的时候也可以选择自己处理不处理。
Android 事件分发面试题2相关推荐
- 耗时118天爆肝【1296页】的“Android高级开发面试题”,终于成功上岸字节
前言 本人16年毕业于一家普通二本,考研裂开了且没有实习经验,只做过两个项目,每天就是不断地投简历.刷面经,感觉自己都要抑郁了,最后勉强进入了一家学校合作的互联网公司,后面陆陆续续也换了几家公司,毕业 ...
- Android事件分发之ViewGroup篇 -- ViewGroup的dispatchTouchEvent、onTouchEvent、onInterceptTouchEvent之间关系
Android事件分发之ViewGroup篇(FatherViewGroup) – ViewGroup的dispatchTouchEvent.onTouchEvent.onInterceptTouch ...
- Android事件分发之ACTION_CANCEL机制及作用
目录 ACTION_CANCEL产生场景 ACTION_CANCEL作用 FLAG_DISALLOW_INTERCEPT的作用 如果要查看ACTION_MOVE与ACTION_UP的事件传递机制,查看 ...
- Android事件分发之ACTION_MOVE与ACTION_UP的传递机制
目录 引言 ACTION_MOVE与ACTION_UP的传递机制 mFirstTouchTarget作用 mFirstTouchTarget为什么是链表结构 引言 关于Android事件分发机制网上相 ...
- Android软件开发面试题,安卓面试题库
一.开始的开始 **Android框架体系架构(高级UI+FrameWork源码)**这块知识是现今使用者最多的,我们称之Android2013~2016年的技术,但是,即使是这样的技术,Androi ...
- Android-Notes|BottomNavigationView-爱上-Lottie,android高级开发面试题
} 复制代码 封装个 BasicData,存放 App 内置的一些基本数据,这里主要针对 Lottie 文件: val mNavigationAnimationList = arrayListOf( ...
- Android软件开发面试题,Android入门
前言 首先声明,楼主不是什么大牛,没有多牛逼的技术,只是公司扩招团队,有幸作为技术面试官,面试了这么多人之后的感想,希望对大家有一点点帮助. Java相关 容器(HashMap.HashSet.Lin ...
- Android中高级进阶开发面试题冲刺合集(四)
以下主要针对往期收录的面试题进行一个分类归纳整理,方便大家统一回顾和参考.本篇是第四集~ 强调一下:因篇幅问题:文中只放部分内容,全部面试开发文档需要的可在公众号<Android苦做舟>获 ...
- Android中高级进阶开发面试题冲刺合集(七)
以下主要针对往期收录的面试题进行一个分类归纳整理,方便大家统一回顾和参考.本篇是第七集~ 强调一下:因篇幅问题:文中只放部分内容,全部面试开发文档需要的可在公众号<Android苦做舟>获 ...
最新文章
- linux mysql 1045 错误_Linux 下,mysql数据库报无法登陆错误:ERROR 1045 (28000): Access denied for use...
- python完全新手教程-Python完全新手教程
- iframe跨域自适应高度
- 快速构建Windows 8风格应用33-构建锁屏提醒
- php引用类,thinkphp引用类的使用
- kafka集群 kubernetes_为什么 Kubernetes 如此受欢迎?
- Google 插件总览
- postgresql安装之后修改默认用户密码
- SQL查询重复记录,删除重复记录
- RTT线程管理篇——RTT时间片
- linux es数据库 head,centos7安装Elasticsearch及Es-head插件详细教程(图文)
- lua运算与php运算符,Lua 运算符
- java 高级工程师面试题集锦,持续更新~
- 电脑关机后键盘灯和风扇还在转的解决方案
- LaTeX软件安装及简易入门
- 全网最全的划分VLAN的方法,走过路过不要错过
- tbase 之二 pgbench
- 山东理工大学oj打字速度测试
- 全民一起VBA实战篇第三课:文本内容的实用技巧
- rabbitmq遇到的一些坑