popupwindow和dialog的區(qū)別

我把最重要的核心本質(zhì)區(qū)別寫(xiě)出來(lái):

它們的相同點(diǎn):它們都是彈窗

基本區(qū)別:popupwindow在顯示之前一定要設(shè)置寬高,Dialog沒(méi)有;popupwindow默認(rèn)不會(huì)響應(yīng)物理鍵盤(pán)的返回鍵,只有設(shè)置了popup.setfocusable(true)時(shí)才會(huì)響應(yīng),Dialog會(huì)響應(yīng)物理鍵盤(pán);popupwindow不會(huì)給頁(yè)面其他部分添加蒙阪,dialog會(huì)。;popupwindow沒(méi)有標(biāo)題,dialog默認(rèn)有標(biāo)題,可以通過(guò)dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);取消標(biāo)題;二者顯示的時(shí)候都要設(shè)置Gravity。如果不設(shè)置,Dialog默認(rèn)是Gravity.CENTER。

核心區(qū)別:Dialog是非阻塞式對(duì)話(huà)框,AlertDialog彈出時(shí)后臺(tái)還可以做其他事情,popupwindow是阻塞式對(duì)話(huà)框,popupwindow彈出時(shí)程序會(huì)等待,在popupwindow結(jié)束前程序會(huì)一直等待,當(dāng)調(diào)用diamiss方法后popupwindow彈窗關(guān)閉程序才向下進(jìn)行。

(這兩種表現(xiàn)最直接的解釋方式:AlertDialog彈出時(shí)背景是黑的,當(dāng)我們點(diǎn)擊背景時(shí)AlertDialog會(huì)消失,這證明了程序不僅響應(yīng)會(huì)AlertDialog,還會(huì)響應(yīng)其他操作,這證明AlertDialog是非阻塞式對(duì)話(huà)框;popupwindow彈出時(shí)背景沒(méi)什么變化,當(dāng)我們點(diǎn)擊背景時(shí)程序沒(méi)有響應(yīng),只允許我們操作popupwindow,其他操作被阻塞)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容