onTouchEvent
イベントが渡されたときにtrue を返すことにより、ビューが MotionEvent 自体を処理することを決定できることを理解していACTION_DOWN
ます。が返された場合true
、後続のすべてのイベントを受け取りMOVE/UP/CANCEL
ます。これはうまくいっています。
私がやりたいことは、この決定をACTION_MOVE
イベントに延期することです. 子を含む ViewGroup があり、水平または垂直にスクロールするかどうかに応じて、ViewGroup または Child が処理を担当するようにしたいと考えています。MotionEvents
何かのようなもの:
public class MyViewGroup extends ViewGroup{
public boolean onTouchEvent(MotionEvent event) {
int action = event.getActionMasked();
if (action == MotionEvent.ACTION_DOWN) {
mDownX = event.getX();
} else if (action == MotionEvent.ACTION_MOVE) {
if (Math.abs(event.getX() - mDownX) > THRESHOLD_X) {
// I want all the future events to be forwarded to this ViewGroup
return true;
}
}
return false;
}
}
public class MyChild extend View {
public boolean onTouchEvent(MotionEvent event) {
int action = event.getActionMasked();
if (action == MotionEvent.ACTION_DOWN) {
mDownY = event.getY();
} else if (action == MotionEvent.ACTION_MOVE) {
if (Math.abs(event.getY() - mDownY) > THRESHOLD_Y) {
// I want all the future events to be forwarded to this View
return true;
}
}
return false;
}
}
それは可能ですか?現在、ViewGroup のみがMOVE/UP/CANCEL
. ビューを転送する適切な子が見つからなかったためだと思います。