ここでは、特定のリスト ビューのアイテム内にカスタム コントロールを配置するという、突飛なアイデアを試しています。コントロールは、ユーザーが特定のトリガー ポイントに触れてから「ドラッグ」できる場合にのみ「アクティブ化」されます。
私の質問は、リストビューがイベントを受け取ってスクロールするのを防ぐために onTouchEvent(...) で何ができるかということです。現在、コントロールに触れて把握できますが、指を上下に動かしすぎると、リストビューが引き継いでスクロールを開始し、ビューは ACTION_UP イベントを受け取りません。
これが私の現在のonTouchEventコードです:
if (e.getAction() == MotionEvent.ACTION_DOWN) {
Log.d("SwipeView", "onTouchEvent - ACTION_DOWN" + e.getX() + " " + e.getY());
int midX = (int)(this.getWidth() / 2);
int midY = (int)(this.getHeight() / 2);
if (Math.abs(e.getX() - midX) < 100 &&
Math.abs(e.getY() - midY) < 100) {
Log.d("SwipeView", "HEY");
setDragActive(true);
}
this.invalidate();
return true;
} else if (e.getAction() == MotionEvent.ACTION_MOVE) {
_current[0] = e.getX();
_current[1] = e.getY();
this.invalidate();
return true;
} else if (e.getAction() == MotionEvent.ACTION_UP) {
_current[0] = 0;
_current[1] = 0;
setDragActive(false);
this.invalidate();
return true;
}
なんらかの形でイベント階層と関係があると確信しています。