PopupWindow 兼容6.0以下版本点击外部区域消失

说到点击外部区域消失,可能大部分同学第一反应就是直接设置

   mPopupWindow.setOutsideTouchable(ture)

不就可以了嘛,不就是点击PopupWindow外部区域消失嘛,当然这样设置过后,你在6.0以上版本运行时完全没有问题滴,但是如果运行在6.0以下版本就有问题了,必须要设置背景才有效,不然点击外部区域是不会消失的,这是为何呢?

   mPopupWindow.setBackgroundDrawable(Drawable background)

可能一开始我们都很懵逼,但是一看源码也就清楚了,原来它是根据mBackground这个值来进行判断的,如果没有这个值,就不会走到dispatchEvent 方法,那么也就处理不了dismiss事件了。但是在Google6.0以上版本,Google对源码进行了修改,去除了mBackground是否为Null的判断条件,并且在构造方法中初始化了mBackground这个值,因此在Android 6.0以上,不用调setBackgroundDrawable(Drawable background)这个方法,点击外部区域也就可以消失的。

发布了75 篇原创文章 · 获赞 146 · 访问量 46万+

猜你喜欢

转载自blog.csdn.net/lvshuchangyin/article/details/89915894