关于PopupWindow的一些备忘

本文探讨了PopupWindow在Android中设置背景的重要性,指出有无背景对其行为的影响,包括点击Back键或外部区域时的行为变化。同时,文章提到在部分手机型号上,如Nexus系列,PopupWindow全屏显示可能遮挡虚拟按键的问题,并提供了加入背景Drawable后的解决方案,确保PopupWindow不会覆盖虚拟操作区。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.有无背景对PopupWindow的影响。

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

原因是如果有背景,则会在contentView外面包一层PopupViewContainer之后作为mPopupView,如果没有背景,则直接用contentView作为mPopupView。而这个PopupViewContainer是一个内部私有类,它继承了FrameLayout,在其中重写了Key和Touch事件的分发处理

博文:http://www.cnblogs.com/mengdd/p/3569127.html 对它的源码进行了分析。

解决方法:

giftPopupWindow.setBackgroundDrawable(new BitmapDrawable());

 

2.部分型号的手机(如Nexus系列)有虚拟操作区域。如果PopupWindow操作区域为全屏,会遮挡住虚拟按键操作区。

giftPopupWindow.setBackgroundDrawable(new BitmapDrawable());

加入了这句话后,PopupWindow在计算全屏区域时将不会把虚拟操作区计算进去。

  

转载于:https://www.cnblogs.com/fishbone-lsy/p/5169492.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值