I have a view that covers entire screen (let's say ParentView
), and child inner view ChildView
that covers only portion of it.
I want to make ChildView
to respond to onSingleTapUp()
, while the ParentView
respond to onFling()
. I am trying to do so by attaching one SimpleOnGestureListener
on ChildView
and one SimpleOnGestureListener
on ParentView
.
To accept onSingleTapUp()
from ChildView
, its listener's onDown()
has to return true.
But once I do that, the listener tied to ParentView
does not hear any motion events anymore since it is taken by the ChildView
's listener. Even though ChildView
's onFling()
returns false, the events do not flow to the ParentView
's listener.
How can I make the parent view's listener catch the fling gesture while child view's listener catch tap gesture?
I don't think any source code is needed to explain the situation, but here is a snippet that sets up my ChildView
listener.
ChildView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return singleTapGestureDetector.onTouchEvent(motionEvent);
}
});
One workaround could be to have both ParentView
and ChildView
's listeners to handle onFling()
while only ChildView
's listener handle onSingleTapUp()
, but in that case, fling won't be able to happen across the ChildView
(like start outside the child and then end within the child), I believe.