2011-12-02 105 views
6

我希望能夠得到我目前遇到的問題的答案。當彈出窗口時Android彈出窗口消失

我有一個擴展彈出窗口的類。它可以正常工作,除非我不希望窗口在窗口外單擊時解散。

目前我有setOutsideTouchable(false);但這只是停止窗口外的事件,它仍然會關閉彈出窗口。

對話有setCanceledOnTouchOutside(false),有沒有類似的東西我可以使用?你在使用這個PopupWindow

感謝

+0

這是我的答案[1]!問題是[問題]。 [1]:http://stackoverflow.com/questions/10406339/avoiding-popupwindow-dismissal-after-touching-outside/30586418#30586418 [question]:http://stackoverflow.com/questions/10406339/avoid-popupwindow-dismissal-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

當你巡航計算器並突然意識到你需要的答案是由一位老同事寫的 - 乾杯Joss –

+0

救了我的一天。謝謝哥們.. –

0

?這聽起來像你用更多Dialog的方式使用它。

這就是說,你可能需要研究使用setTouchInterceptor,然後創建自己的OnTouchListener,你將用它來檢查觸摸的執行位置(在彈出或不彈出)。

+0

嗨,我使用彈出式窗口,裏面有旋轉木馬和幾個線性佈局。這似乎最適合我需要做的事情,除了我有這個問題。 –