2

問題は、タッチイベントが親に設定されているとスクロールがインターセプトされることlayoutです。onTouch巻物を入れたままイベントを継続することはできますScrollViewか?

4

1 に答える 1

3

これは非常にトリッキーな部分です。次のオーバーライドされたメソッドがありますActivitypublic boolean onTouchEvent(MotionEvent event)

これは、画面全体のすべてのタッチ イベントを解釈する一般的な方法です。そして、「わかりました。これを実装できます。準備万端です..」と言うことができます。そして、ここで Android がどのように機能するかという難しい部分が来ます。

ご存知のように、カスタム実装を追加するために実装できるView独自のメソッドがあります。onTouchEvent()では、どのメソッドがリッスンするのでしょうか? ScrollViewまたはActivity?_ これらのタッチ イベントは、「内側」の要素から「外側」の要素に移動するようです。つまり親子関係。

考慮すべきもう 1 つの点は、onTouchEvent メソッドがブール値を返すことです。このブーリアン パラメータは、タッチ イベントを 1 レベル上げるか、現在の で処理するかを決定しますView。つまりCustomViewA、onTouchEvent() をCustomViewB実装し、独自のタッチ イベントを実装する があり、A が B の子である場合、タッチ イベントは最初に A を通過し、処理されない場合は B に移動します。

したがって、基本的にはい、それは可能です。やりたいタッチイベントによって異なります。

したがって、私たちの場合、タッチ イベントが水平の場合にScrollView戻ります。trueアクティビティのタッチ イベントは、ScrollViewタッチ イベントがそれ自体で処理されない場合にのみ処理されます。それ以外の場合は、スクロール ビューの on touch イベントをオーバーライドして実装する必要があり、場合によっては、レイアウト全体で実装するために false を返す必要があります。最後の部分で頑張ってください。フリング効果の実装を開始しましたが、いくつかの問題が発生したため、スクロール ビューを使用した 2 本指の移動を実装しました。これは魅力のように機能します。

これは約 1 週間の調査と実験であり、私が思いついたことの概要です。他に何か見つけたら教えてください。それが役に立ったことを願っています。

于 2012-07-21T22:54:34.597 に答える