ViewGroup的事件分发

ViewGroup的事件分发

老师,想问一个问题,对于一个ViewGroup来说,它的onDispatchTouchEvent的返回值有什么作用呢?返回值true和false分别代表什么呢?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

dispatchTouchEvent负责分发事件,在dispatchTouchEvent里通常会调用onTouchEvent表示执行事件,或者说消费事件,当dispatchTouchEvent:

  • 返回true:表示事件被当前视图消费掉,事件不会在继续分发;

  • 返回为super.dispatchTouchEvent:表示继续分发该事件;

  • 返回false:表示事件停止往子View传递和分发,同时开始往父控件回溯(父控件的onTouchEvent开始从下往上回传直到某个onTouchEvent return true),事件分发机制就像递归,return false 的意义就是递归停止然后开始回溯;

  • 老师能麻烦以这节课代码为例,详细说一下什么情况下需要返回true,什么时候需要返回false,什么时候要往父视图回溯吗?我能看懂代码意思,但不明白为什么这些情况下要返回true/false/super,是为了防止事件冲突还是基于什么别的考虑?

    http://img1.sycdn.imooc.com//climg/60d8974309824f0608670627.jpg

    2021-06-27 23:21:12
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师