PopupWindow和AlertDialog區別


 本質區別為:AlertDialog是非阻塞式對話框:AlertDialog彈出時,后台還可以做事情;而PopupWindow是阻塞式對話框:PopupWindow彈出時,程序會等待,在PopupWindow退出前,程序一直等待,只有當我們調用了dismiss方法的后,PopupWindow退出,程序才會向下執行。這兩種區別的表現是:AlertDialog彈出時,背景是黑色的,但是當我們點擊背景,AlertDialog會消失,證明程序不僅響應AlertDialog的操作,還響應其他操作,其他程序沒有被阻塞,這說明了AlertDialog是非阻塞式對話框;PopupWindow彈出時,背景沒有什么變化,但是當我們點擊背景的時候,程序沒有響應,只允許我們操作PopupWindow,其他操作被阻塞。

PopupWindow pw = new PopupWindow(view,width,height);

pw.setContentView(popupconten);//重新設置PopupWindow的內容

pw.setFocusable(true);//默認是false,為false時,PopupWindow沒有獲得焦點能力,如果這是PopupWindow的內容中有EidtText,需要輸入,這是是無法輸入的;只有為true的時候,PopupWindow才具有獲得焦點能力,EditText才是真正的EditText。

pw.setAsDropDown(View view);//設置PopupWindow彈出的位置。

 

AlertDialog的構造方法全部是Protected的,所以不能直接通過new一個AlertDialog來創建出一個AlertDialog。

要創建一個AlertDialog,就要用到AlertDialog.Builder中的create()方法。

使用AlertDialog.Builder創建對話框需要了解以下幾個方法:

setTitle :為對話框設置標題
setIcon :為對話框設置圖標
setMessage:為對話框設置內容
setView : 給對話框設置自定義樣式
setItems :設置對話框要顯示的一個list,一般用於顯示幾個命令時
setMultiChoiceItems :用來設置對話框顯示一系列的復選框
setNeutralButton :普通按鈕

setPositiveButton :給對話框添加"Yes"按鈕
setNegativeButton :對話框添加"No"按鈕
create : 創建對話框
show :顯示對話框

 

Dialog alertDialog = new AlertDialog.Builder(this).
setTitle("對話框的標題").
setMessage("對話框的內容").
setIcon(R.drawable.ic_launcher).
create();
alertDialog.show();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM