@cxm-2016
2017-01-19T11:26:34.000000Z
字数 695
阅读 4876
Android
版本:1
设置了PopupWindow的background,点击Back键或者点击弹窗的外部区域,弹窗就会dismiss.相反,如果不设置PopupWindow的background,那么点击back键和点击弹窗的外部区域,弹窗是不会消失的.
那么,如果我想要一个效果,点击外部区域,弹窗不消失,但是点击事件会向下面的activity传递,比如下面是一个WebView,我想点击里面的链接等.
需要给Window设置一个Flag
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
这个Flag的设置与否是由一个叫mNotTouchModal的字段控制,但是设置该字段的set方法被标记为@hide。
可以使用反射设置模式
public static void setPopupWindowTouchModal(PopupWindow popupWindow,boolean touchModal) {if (null == popupWindow) {return;}Method method;try {method = PopupWindow.class.getDeclaredMethod("setTouchModal",boolean.class);method.setAccessible(true);method.invoke(popupWindow, touchModal);}catch (Exception e) {e.printStackTrace();}}
