[TOC]
在android4.0/5.0系统上,使用popupWindow时,点击内容外部区域无法关闭,但是在6.0机子上又是正常的,而我在代码中明明已经进行了如下设置:
mPopupWindow = new PopupWindow(popView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);
// 点击其他地方消失
mPopupWindow.setOutsideTouchable(true);
点击外部区域不关闭
红色区域是popupwindow内容区域
google了一下都说要添加一句:
mPopupWindow.setBackgroundDrawable(new BitmapDrawable());
测试了果然ok,不过还是想知道下所以然,稍微探究一下:
既然是点击没效果,搜索一下touch事件好了:
在4.0/5.0的 PopupWindow.java 源码中发现是在 PopupViewContainer 类中设置的,而在6.0源码中则是位于 PopupDecorView 类;
继续查找在哪里初始化的,发现 preparePopup(),它是在显示(showAtLocation() , showAsDropDown())的时候调用的,而 preparePopup() 的具体内容:
// PopupWindow.java @ api 14/19/21<