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)这个方法,点击外部区域也就可以消失的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值