2

此处的 Android 输入事件文档似乎暗示在事件侦听器中返回 false 将导致事件继续传递给其他侦听器。例如

OnTouchListener touchListener = new OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        // should continue on to other views
    return false;
    }
};

问题是,如果我在同一个布局中有两个按钮并且我单击一个按钮,我希望事件会继续到所有视图,因为我返回 false,例如:

    Button submitButton = (Button) findViewById(R.id.submit_button);
    submitButton.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            System.out.println("--> submitButton");
            return false;
        }

    });

    Button clearButton = (Button) findViewById(R.id.clear_button);
    clearButton.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            System.out.println("--> clearButton");
            return false;
        }

    });

由于提交按钮的侦听器返回 false 我希望点击结果被发送到清除按钮,但输出始终是:

--> submitButton
--> submitButton

由于我似乎误解了这篇文章,有人可以解释事件是如何在视图中传播的吗?

4

1 回答 1

1

事件从父视图传播到子视图。永远不要兄弟姐妹的意见。

如果您的 clearButton 在 submitButton 内(女巫甚至不可能),那么您正在尝试的内容将起作用。

您可以使用performClick()来模仿这种行为

于 2013-10-14T14:31:15.733 回答