AlertDialog和Popupwindow區別

關於Popupwindow的教程

PopupWindow(上)
PopupWindow(下)
【達內課程】PopupWindow

關於AlertDialog的教程

AlertDialog使用

相同點:這兩個都是彈窗
不同點:
1、popupwindow在顯示之前一定要設置寬高,Dialog不用
2、popupwindow默認不會響應物理鍵盤的返回鍵,只有設置了popup.setfocusable(true)時纔會響應,Dialog會響應物理鍵盤
3、Popupwindow不會給頁面其他的部分添加蒙層,而Dialog會
4、Popupwindow沒有標題,Dialog默認有標題,可以通過dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);取消標題
5、二者顯示的時候都要設置Gravity。如果不設置,Dialog默認是Gravity.CENTER
6、二者都有默認的背景,都可以通過setBackgroundDrawable(new ColorDrawable(android.R.color.transparent));去掉
7、AlertDialog是非阻塞式對話框:AlertDialog彈出時,後臺還可以做事情;而PopupWindow是阻塞式對話框:PopupWindow彈出時,程序會等待,在PopupWindow退出前,程序一直等待,只有當我們調用了dismiss方法的後,PopupWindow退出,程序纔會向下執行
(這兩種表現最直接的解釋方式:AlertDialog彈出時背景是黑的,當我們點擊背景時AlertDialog會消失,這證明了程序不僅響應會AlertDialog,還會響應其他操作,這證明AlertDialog是非阻塞式對話框;popupwindow彈出時背景沒什麼變化,當我們點擊背景時程序沒有響應,只允許我們操作popupwindow,其他操作被阻塞)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章