画面全体をカバーするビュー (としましょう) と、その一部のみをカバーParentViewする子内部ビューがあります。に反応させながら、に反応さChildViewせたい。1つと1つを付けてそうしようとしています。ChildViewonSingleTapUp()ParentViewonFling()SimpleOnGestureListenerChildViewSimpleOnGestureListenerParentView
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);
}
});
ParentView1 つの回避策として、との両方ChildViewのリスナーを処理し、のリスナーonFling()のみを処理することもできますが、その場合、 を越えてフリングが発生することはありません(子の外側で開始してから、子の中で終了するなど)。信じる。ChildViewonSingleTapUp()ChildView