ここにあるAndroid 入力イベントのドキュメントは、イベント リスナーで false を返すと、イベントが他のリスナーに引き継がれることを暗示しているようです。例えば
OnTouchListener touchListener = new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// should continue on to other views
return false;
}
};
問題は、同じレイアウトに 2 つのボタンがあり、そのうちの 1 つをクリックすると、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
記事を誤解しているように見えるので、ビュー内でイベントがどのように伝播されるかを誰か説明できますか?