首页 > 解决方案 > OnTouchEventListener返回值的含义

问题描述

为什么这意味着return falsein OnTouchEventListener。如果我们将其更改为 会有什么不同return true

我发现“如果听众已经消费了事件,则为真,否则为假。” 但我不明白“消费事件”是什么意思?

标签: android

解决方案


我发现“如果听众已经消费了事件,则为真,否则为假。” 但我不明白“消费事件”是什么意思?

消费事件意味着它的监听器不会将此事件传递给其他监听器,因为这个特定的监听器消费了它。

那么,那些进一步的听众是什么,他们可以是一个或多个听众;例如,当您点击一个视图时,会触发该特定视图的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,因为您trueonTouch()

如果您false从中返回onTouch(),则将同时显示TouchedClicked

这同样适用于View.OnLongClickListener


推荐阅读