参考原文Android PopupWindow用法解析进行学习,通过实例及PopupWindow源码分析了PopupWindow的使用。文章最后的“补充Case: 弹窗不消失,但是事件向下传递”很赞。
不过,源码已经发生了变化,文章中提到的PopupViewContainer类,在目前的源码(Android6.0)中使用的是PopupBackgroundView和PopupDecorView共同完成的。
而在6.0版本的PopupWindow的preparePopup方法中,无论是否setBackgroundDrawable,最终都要创建PopupDecorView实例来生成视图,而PopupDecorView实现了onTouchEvent,所以用6.0版本开发,运行在6.0的设备上,无论是否setBackgroundDrawable,点击popupWindow之外的区域,popupWindow都会消失。
源码截图:
PopupWindow.preparePopup方法:
PopupDecorView类:
时间: 2024-12-22 21:35:40