OnTouchListener的onTouch返回false未阻止onTouchEvent调用,为何普遍认为可以?
View.OnTouchListener的onTouch返回值逻辑澄清
官方文档对View.OnTouchListener的onTouch方法返回值的逻辑表述模糊,部分Stack Overflow回答称:
若返回false,事件会传递给父视图处理。
但实际测试后发现完全不是这么回事:
- 给Button、RecyclerView等任意View设置
setOnTouchListener,让onTouch返回false时,该View仍能正常响应事件——这说明事件并没有流向父视图,而是被当前View的onTouchEvent方法消费了。 - 当
onTouch返回true时,事件会被立即消费,View无法呈现预期的默认行为(比如Button的点击反馈、RecyclerView的滚动)。
之前有个普遍误解:认为onTouch返回false会阻止onTouchEvent的调用,但实际测试证明这是错误的——返回false时,onTouchEvent依然会被触发,事件会交由View自身的默认事件处理逻辑来处理。
内容的提问来源于stack exchange,提问作者xidsyed
相关产品推荐
相关产品推荐

