gpt4 book ai didi

安卓事件传播

转载 作者:行者123 更新时间:2023-11-29 01:52:18 28 4
gpt4 key购买 nike

Android 输入事件文档 here似乎暗示在事件监听器中返回 false 将导致事件继续到其他监听器。例如

OnTouchListener touchListener = new OnTouchListener() {

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

问题是,如果我在同一布局中有两个按钮,并且我点击其中一个,我希望该事件继续发生在所有 View 上,因为我返回的是 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

谁能解释一下事件是如何在 View 中传播的,因为我似乎误解了这篇文章?

最佳答案

事件从父 View 传播到 subview 。永远不要对兄弟意见。

如果您的 clearButton 位于 submitButton 内,您正在尝试的方法将起作用(女巫甚至不可能)。

您可以使用 performClick() 模仿该行为

关于安卓事件传播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17161601/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com