通过单击外部可关闭PopupMenu的方式关闭PopupWindow

时间:2019-07-15 14:39:13

标签: android android-popupwindow

我为平板电脑开发了一个Android应用程序。当用户单击设置按钮时,我想在屏幕右上角向用户显示一个对话框,您可以在其中配置设置。

鉴于对话框很复杂,我觉得PopupWindowPopupMenu更合适。 PopupMenu具有很好的行为,即当用户在菜单外单击时会自动关闭。如何使PopupWindow表现出相同的行为?

3 个答案:

答案 0 :(得分:2)

您只需要设置setBackgroundDrawable的{​​{1}}和setOutsideTouchable属性,如果您触摸窗口外部,它将关闭该窗口。

PopupWindow

答案 1 :(得分:0)

当您触摸外部并单击“后退”按钮时,我看到PopupMenu关闭。因此,要使PopupWindowPopupMenu一样消散,应使用

popupWindow.isFocusable = true
// or you can send focusable when initialize PopupWindow because they have constructor like PopupWindow(View contentView, int width, int height, boolean focusable) 

您可以在此处查看my full answer,以了解为什么我们应该使用isFocusable
希望对您有帮助

答案 2 :(得分:0)

//要在触摸外部时关闭弹出窗口。

mPopupWindow.setOutsideTouchable(true);

//将焦点设置为弹出窗口,以便在触摸时可以关闭该窗口

mPopupWindow.setFocusable(true);

//如果要删除默认背景。

mPopupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
  

setOutsideTouchable(boolean touchable)控制是否弹出   将会在其窗口之外的触摸事件中得到通知。

     

setFocusable(布尔型可聚焦)   更改弹出窗口的焦点。

     

setBackgroundDrawable(可绘制背景)指定背景   此弹出窗口可绘制的。