从Android中的事件处理方法返回的布尔值的含义是什么

Joh*_*ang 109 events android return listener touch

在android中,大多数事件侦听器方法返回一个布尔值.那个真/假值是什么意思?什么会导致子序列事件?

class MyTouchListener implements OnTouchListener {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        logView.showEvent(event);
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

关于上面的例子,如果在onTouch方法中返回true ,我发现每个触摸事件(DOWN,UP,MOVE等)都是根据我的logView捕获的.相反,如果返回false,则仅捕获DOWN事件.所以似乎返回false会阻止事件传播.我对么 ?

此外,在OnGestureListener中,许多方法也必须返回一个布尔值.它们有相同的含义吗?

ada*_*amp 136

如果您trueACTION_DOWN事件中返回,则您对该手势中的其他事件感兴趣.在这种情况下,"手势"表示所有事件,直到最后ACTION_UPACTION_CANCEL.falseACTION_DOWN手段返回您不希望事件和其他视图将有机会处理它.如果您有重叠的视图,这可以是兄弟视图.如果不是,它将冒泡到父母.

  • adamp,有没有办法继续接收事件并让事件通过? (3认同)

Mat*_*ieu 23

从文档:http://developer.android.com/reference/android/view/View.OnTouchListener.html#onTouch (android.view.View,android.view.MotionEvent)

"如果听众已经消费了该事件,则为真,否则为假."

如果返回true,则处理该事件.如果为false,它将转到下一层.


Fal*_*rri 12

布尔值确定是否使用事件.

是的,你是对的.如果返回false,则下一个侦听器处理该事件.如果它返回true,则事件由侦听器使用,而不是发送到下一个方法.

  • 这是错误的.`true`表示您使用了该事件并希望手势中的其他事件 - 其他侦听器/视图将不会接收事件.`false`意味着让别人来处理这个事件.它实际上比这更具体一点; 看到我的回答. (2认同)