1

私が達成しようとしているシナリオは次のとおりです。メインレイアウト(framLayout)があり、その中に異なるビューを含むlinearLayoutがあります。グローバルframeLayoutが子ビュークラスからタッチイベントを受け取るようにしたいと思います。

すべての子ビューで、グローバルframeLayoutオブジェクトを取得し、そのオブジェクトでsetOnTouchListenerを実行しています。次に、UIから、内側のlinearLayoutに挿入された最後のビューにタッチすると、touchイベントが発生します。しかし、他の見解については私はしません。

FramLayout
   LinearLayout
     View1    - not getting touch event 
     View2    - not getting touch event 
     View3    - not getting touch event 
     View4    - getting touch event 

同様の行動で遭遇した人はいますか?

4

2 に答える 2

3

うーん...コードがないと、診断するのは少し難しいですが、私はこのシナリオを疑っています->

onTouchListenerをFramelayoutに4回設定していますが、呼び出すたびに、以前のonTouchListenerが置き換えられます。そのため、最後のonTouchListenerが機能しているように見える唯一のものです。そのような場合は、代わりに、FrameLayoutのonTouchListenerに実行させたいコードを取得してグローバルな場所に配置し、各子ビューのonTouchがそのグローバル関数をトリガーするようにすることができます。わかる?

また、私の答えが正しければ(あなたの質問に答えた他のすべての人と一緒に)、私たちの答えを正解としてマークしていただけますか?私の答えの左側にある空のチェックマークをクリックすると、そうすることができます。数字のすぐ下(評価)

于 2012-11-09T17:44:52.263 に答える
1

すべての子ビューで、グローバルframeLayoutオブジェクトを取得し、そのオブジェクトでsetOnTouchListenerを実行しています。

ビューは1つのOnTouchListenerのみを持つことができます。新しいリスナーを設定すると、前のリスナーが上書きされます。

于 2012-11-09T17:36:26.467 に答える