垂直方向にスクロールする ListView の個々のセルでの水平方向の「フリング」ジェスチャに応答したいと思います。現在、リスト内の各セル ビューに GestureDetector を使用してこれを実現しています。
ただし、セルビューの1つに水平方向の「フリング」を実際に登録するのは、スクロールしない線形レイアウトでスタックしている場合よりもはるかに難しいことに気付きました。
たとえば、セル内をタップしてから指を「右上に」かなりすばやくドラッグすると、非スクロールの場合はフリングとして認識されますが、スクロールの場合は認識されません。
ListView のサブクラス化と onInterceptTouchEvent のオーバーライドを試してみましたが、うまくいかないようです。私が望んでいるのは、最終的に子ビューで「フリング」として認識されるジェスチャが、スクロール ビューによって無視されるようにすることです。ジェスチャの「角度」、つまり Y 距離と X 距離の比率に基づいてこれらを制限したいと思います。その比率が十分に高い場合は、「垂直」フリングであり、ListView がそれを処理する必要があります。その比率が十分に低い場合、それは「水平」フリングであり、ListView はそれを無視し、子ビューがそれを処理できるようにする必要があります。
これがどのように達成されるかについて、誰かが何らかの見通しを提供できますか? ListView サブクラスの onInterceptTouchEvent メソッドで何か賢いことをしなければならないと思います。