画面全体をカバーするビュー (としましょう) と、その一部のみをカバーParentView
する子内部ビューがあります。に反応させながら、に反応さChildView
せたい。1つと1つを付けてそうしようとしています。ChildView
onSingleTapUp()
ParentView
onFling()
SimpleOnGestureListener
ChildView
SimpleOnGestureListener
ParentView
onSingleTapUp()
fromを受け入れるにはChildView
、そのリスナーonDown()
が true を返す必要があります。しかし、これを行うと、 に関連付けられているリスナーは、 のリスナーParentView
によって取得されるため、モーション イベントを聞くことができなくなりますChildView
。は false を返しますが、イベントはChildView
のリスナーonFling()
に流れません。ParentView
親ビューのリスナーがフリング ジェスチャをキャッチし、子ビューのリスナーがタップ ジェスチャをキャッチするにはどうすればよいですか?
状況を説明するのにソース コードは必要ないと思いますが、ChildView
リスナーをセットアップするためのスニペットを次に示します。
ChildView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return singleTapGestureDetector.onTouchEvent(motionEvent);
}
});
ParentView
1 つの回避策として、との両方ChildView
のリスナーを処理し、のリスナーonFling()
のみを処理することもできますが、その場合、 を越えてフリングが発生することはありません(子の外側で開始してから、子の中で終了するなど)。信じる。ChildView
onSingleTapUp()
ChildView