android - OnTouchEventListener返回值的含义
问题描述
为什么这意味着return false
in OnTouchEventListener
。如果我们将其更改为 会有什么不同return true
?
我发现“如果听众已经消费了事件,则为真,否则为假。” 但我不明白“消费事件”是什么意思?
解决方案
我发现“如果听众已经消费了事件,则为真,否则为假。” 但我不明白“消费事件”是什么意思?
消费事件意味着它的监听器不会将此事件传递给其他监听器,因为这个特定的监听器消费了它。
那么,那些进一步的听众是什么,他们可以是一个或多个听众;例如,当您点击一个视图时,会触发该特定视图的onTouch()
回调方法OnTouchEventListener
,如果您返回true
,则此侦听器会消费该事件,因此不会触发下一个侦听器回调;在我们的例子中,这个特定视图的onClick()
回调OnClickListener
不会被调用。
更多说明:
假设你有一个按钮,并且你在下面注册了它的事件监听器。
Button myButton = findViewById(R.id.button1);
myButton.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Toast.makeText(Activity1.this, "Touched", Toast.LENGTH_SHORT).show();
return true; // Consumes the event
}
});
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(Activity1.this, "Clicked", Toast.LENGTH_SHORT).show();
}
});
现在,当您点击该按钮时,将仅显示Touched toast,而不显示Clicked toast,因为您true
从onTouch()
如果您false
从中返回onTouch()
,则将同时显示Touched和Clicked。
这同样适用于View.OnLongClickListener
推荐阅读
- c# - 忽略正则表达式中的空格
- java - 如何将字符串 [1,2,3,4,5] 转换为整数数组?
- r - 重置shinyjqui拖放顺序输入
- background - 当应用程序终止时,Expo BackgroundFetch 在 android 上不起作用
- sql - sql字符串到日期的转换
- javascript - WordPress Gutenberg-Block Editor 组件 SelectControl:自定义事件道具
- angular - 如何处理角瓜尔中的异步功能?
- android - 如何以编程方式更改应用颜色?
- reactjs - 正确使用 history.push
- linux - 无法使用 ansible ping RHEL 主机。错误:'权限被拒绝(公钥、gssapi-keyex、gssapi-with-mic、密码)