原文:http://www.cnblogs.com/mengdd/p/3569127.html 通過實例及PopupWindow源碼分析了PopupWindow的使用。文章最後的“補充Case: 彈窗不消失,但是事件向下傳遞”很贊。 不過,源碼已經發生了變化,文章中提到的PopupViewConta ...
原文:http://www.cnblogs.com/mengdd/p/3569127.html
通過實例及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類: