【发布时间】:2023-03-29 22:36:02
【问题描述】:
Android 输入事件文档here 似乎暗示在事件侦听器中返回 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
由于我似乎误解了这篇文章,有人可以解释事件是如何在视图中传播的吗?
【问题讨论】:
-
您可以尝试使用 OnClickListener 而不是 OnTouchListener..
-
这是一个理论问题。我正在尝试确认文档中概述的行为。此外,onClick 与这种情况无关,因为该侦听器不需要返回值。
标签: android android-ui android-event