2011-12-02 102 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

嗨,我使用弹出式窗口,里面有旋转木马和几个线性布局。这似乎最适合我需要做的事情,除了我有这个问题。 –