2010-12-30 14 views
2

コンテキストメニューを表示するコードを挿入すると、メニューは静止した長押しだけでなく最後にも表示されますドラッグの。Android:ドラッグが長押しとして解釈されないようにするには

これを防ぐには、ScrollInProgressフラグをViewに追加し、onCreateContextMenu(...)メソッドの先頭でこのフラグをチェックし、フラグをバイパスしてフラグがセットされているかどうかを確認しますコンテキストメニューに項目を追加します。

しかし、画面をドラッグしたときにコンテキストメニューの作成を防ぐ簡単な方法があるのだろうかと思います。

+0

いくつかのコードは表示されません。ドラッグ/ロングクリックの検出方法を教えてください。 – Falmarri

+0

Falmarriへの回答:SimpleOnGestureListenerを継承するクラスMyGestureDetectorを定義しました。このクラス内では、onScroll(...)メソッドがオーバーライドされ、scrollInProgressフラグをtrueに設定します。アプリの主な活動の中で、 'gestureDetector = new GestureDetector(new MyGestureDetector());'という行があります。これがスクロール(ドラッグ)の開始を検出する方法です。長いプレスは、メインアクティビティのonCreate(...)にコマンド 'registerForContextMenu(myView);を挿入し、' onCreateContextMenu'と 'onContextItemSelected'のコードを書くだけで検出されます。 – prepbgg

+0

私はこの記述をまったく記入する必要があるかどうか教えてください。 – prepbgg

答えて

0

明確にするために、長いプレスを拾うのはジェスチャー検出器ではありませんか? これが有効な場合は、setIsLongpressEnabled(boolean isLongpressEnabled)を使用して無効にすることができます。

+0

あなたの答えをありがとう。ドラッグが進行していないときにアプリが長押しを検出して(コンテキストメニューを表示できるようにする)スクロールの終わりが検出されたときにMyGestureDetectorのonScrollメソッド(私が現在ScrollInProgressフラグを設定しているところ)でsetIsLongpressEnabledをfalseに設定し、setIsLongpressEnabledをtrueに設定する必要があるということですか? – prepbgg