Android弹出窗口在点击外部时会关闭

7
我希望能解决我目前的问题。我有一个扩展了弹出窗口的类,它工作得很好,但当我点击窗口外部时,我不想让该窗口消失。目前我使用了 setOutsideTouchable(false); 但这只是停止了窗口外的事件,它仍然会使弹出窗口消失。对话框有 setCanceledOnTouchOutside(false),我能使用类似的东西吗?谢谢。

这是我的答案1!问题是question - lulalagulu
2个回答

8

最终问题已经解决。

首先创建主布局,将弹出框放在相对布局上。然后在顶部放置一个全屏空白布局,使其不可见并透明。

当弹出框显示时,使用 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);

干杯


你能更详细地解释一下你是如何创建布局的吗? - lory105
当你在浏览StackOverflow时,突然意识到你需要的答案是由一位老同事编写的时候 - 干杯Joss。 - Dean Wild

0
你是用这个PopupWindow做什么的?听起来你是以一种更像Dialog的方式使用它。
话虽如此,你可能需要研究一下如何使用setTouchInterceptor,然后创建自己的OnTouchListener,用于检查触摸发生的位置(在弹出窗口内还是外部)。

嗨,我正在使用带有旋转木马和几个线性布局的弹出窗口。除了我遇到的这个问题之外,它似乎是我需要做的最好的选择。 - Joss Stuart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接