[关闭]
@cxm-2016 2017-01-19T19:26:34.000000Z 字数 695 阅读 4394

Android:PopupWindow事件向下传递

Android

版本:1


设置了PopupWindow的background,点击Back键或者点击弹窗的外部区域,弹窗就会dismiss.相反,如果不设置PopupWindow的background,那么点击back键和点击弹窗的外部区域,弹窗是不会消失的.

那么,如果我想要一个效果,点击外部区域,弹窗不消失,但是点击事件会向下面的activity传递,比如下面是一个WebView,我想点击里面的链接等.

需要给Window设置一个Flag

  1.   WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL

这个Flag的设置与否是由一个叫mNotTouchModal的字段控制,但是设置该字段的set方法被标记为@hide。

可以使用反射设置模式

  1. public static void setPopupWindowTouchModal(PopupWindow popupWindow,
  2. boolean touchModal) {
  3. if (null == popupWindow) {
  4. return;
  5. }
  6. Method method;
  7. try {
  8. method = PopupWindow.class.getDeclaredMethod("setTouchModal",
  9. boolean.class);
  10. method.setAccessible(true);
  11. method.invoke(popupWindow, touchModal);
  12. }
  13. catch (Exception e) {
  14. e.printStackTrace();
  15. }
  16. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注