【问题标题】:Android Popup Window dismisses when clicked outside在外部单击时,Android 弹出窗口会消失
【发布时间】:2011-12-02 11:49:16
【问题描述】:

我希望得到我目前遇到的问题的答案。

我有一个扩展弹出窗口的类。它工作正常,除了我不希望在我在窗口外单击时关闭窗口。

目前我有setOutsideTouchable(false);,但这只会停止窗口外的事件,它仍然会关闭弹出窗口。

一个对话框有setCanceledOnTouchOutside(false),我可以使用类似的东西吗?

谢谢

【问题讨论】:

标签: android popupwindow


【解决方案1】:

好的,最后解决了。

首先制作弹出窗口所在的主要布局相对布局。然后在顶部放置一个全屏空白布局,我将其设置为不可见和透明。

然后在弹出窗口显示时显示,用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);

干杯

【讨论】:

  • 您能否更准确地解释一下您是如何创建布局的?
  • 当您浏览 stackoverflow 并突然意识到您需要的答案是由一位老同事写的 - 欢呼 Joss
【解决方案2】:

你用这个PopupWindow 做什么?听起来您使用它的方式更像Dialog-ish。

话虽如此,您可能不得不考虑使用setTouchInterceptor,然后创建自己的OnTouchListener,您将使用它来检查执行触摸的位置(是否在弹出窗口上)。

【讨论】:

  • 嗨,我正在使用带有旋转木马和内部几个线性布局的弹出窗口。除了我遇到的这个问题之外,它似乎最适合我需要做的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-31
  • 2021-11-21
  • 2012-12-21
  • 1970-01-01
  • 2019-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多