2

ListViewカスタムビューを含む(そして以前にこれを正常に実行したことがある)を使用したいと思います。基本的に、これらのカスタムビューは垂直スライダーであり、の自然な動作と明らかに矛盾しListViewます。からカスタムビューを入力するAdapterと、これらはアイテムのタッチに反応しますが、指を数ピクセル以上動かすとスクロールし、カスタムビューはタッチイベントを受信しなくなります。

ListView自分のコンポーネントに触れたときに、どうすれば(うまく)スクロールを防ぐことができますか?

どういうわけか選択を無効ListViewにして、タッチをアイテムに転送するだけで、スクロール動作を使用できますか?

前もって感謝します。

4

2 に答える 2

8

リストビューのスクロールを防ぐために、次のようにタッチリスナーに追加できます

listView.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if(event.getAction()==MotionEvent.ACTION_MOVE)
            {
                return true;
            }
            return false;
        }
    });

それがうまくいくことを願って、それがあなたに役立つなら投票してください

于 2013-03-07T05:03:16.737 に答える
1

onInterceptTouchEvent()ここにあるように、ルートレイアウト(のListViewような、を含むものFrameLayout)を使用して、すべてのタッチイベントをインターセプトできます

そこで行うことは、モーションイベントをキャプチャし(aMotionEvent.ACTION_DOWNが着信するとtrueを返します)、で次のイベントをキャプチャしonTouchEvent()、モーションがリストアイテム用かリスト自体用かを判断し、それに応じてイベントをディスパッチします。

これが簡単に機能することを期待しないでください。モーションイベントの流れととの間の相互作用を理解するonInterceptTouchEvent()ことonTouchEvent()は困難であり、それをさらに機能させることができます。しかし、私はこれがあなたの問題を解決するための実行可能な方法であると確信しています。

于 2013-03-05T14:22:55.487 に答える