2011-12-02 26 views
6

私は現時点で私の問題に答えたいと考えていました。Androidポップアップウィンドウが外にクリックされたときに閉じ込められます

ポップアップウィンドウを拡張するクラスがあります。ウィンドウの外側をクリックするとウィンドウが消えるのを除いて、うまく動作します。

現時点では私はsetOutsideTouchable(false);ですが、これはウィンドウ外のイベントを停止するだけで、ポップアップを閉じます。

ダイアログにはsetCanceledOnTouchOutside(false)がありますが、私はこれと似たようなものがありますか?あなたがこのPopupWindowを使用している何

おかげ

+0

私の答えは[1]です!そして質問は[質問]です。 [1]:http://stackoverflow.com/questions/10406339/avoiding-popupwindow-dismissal-after-touching-outside/30586418#30586418 [質問]:http://stackoverflow.com/questions/10406339/avoiding-popupwindow-after-touching-outside – user2297951

答えて

6

最終的には固定されています。

まず、ポップアップが相対レイアウト上に配置されるメインレイアウトを作成しました。それから私は目に見えない透明にした上に全画面の空白のレイアウトを配置しました。

次にポップアップが表示される場合、setVisibility(View.VISIBLE);の可視フルスクリーンパネルを設定してポップアップがsetVisibility(View.GONE);

で隠されている場合、タッチを停止する(とレイアウトのタッチリスナー上からtrueを返す必要がある隠しますバックメインレイアウトに渡すイベント):

blocker.setOnTouchListener(new OnTouchListener() { 
@Override 
public boolean onTouch(View v, MotionEvent event) { 
return true; 
} 
}); 

し、ポップアップ・ウィンドウにプロパティを与える:

setTouchable(true); 
setOutsideTouchable(false); 

乾杯

+0

レイアウトの作成方法をより正確に説明できますか? – lory105

+0

あなたが巡回中のstackoverflowをしているときに、突然、あなたが必要とする答えが古い同僚によって書かれていることを認識しています - Joss –

+0

が私の一日を保存しました。ありがとう.. –

0

?あなたがもっとDialog -ish wayでそれを使うように聞こえます。

おそらくsetTouchInterceptorを使用してから、自分でOnTouchListenerを作成し、タッチがどこで実行されたかをポップアップで確認する必要があります。

+0

こんにちは、私はカルーセルと内部のいくつかの線形レイアウトでポップアップウィンドウを使用しています。私が持っているこの問題を除いて、私は何をする必要があるのか​​が最も良いと思われる。 –

関連する問題