Android中的對話框有兩種:PopupWindow和AlertDialog。它們都可以實作彈窗功能,但是他們之間有一些差别,下面總結了一點。
(1)Popupwindow在顯示之前一定要設定寬高,Dialog無此限制。
(2)Popupwindow預設不會響應實體鍵盤的back,除非顯示設定了popup.setFocusable(true);而在點選back的時候,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));去掉。
其中最本質的差别就是:AlertDialog是非阻塞式對話框:AlertDialog彈出時,背景還可以做事情;而PopupWindow是阻塞式對話框:PopupWindow彈出時,程式會等待,在PopupWindow退出前,程式一直等待,隻有當我們調用了dismiss方法的後,PopupWindow退出,程式才會向下執行。這兩種差別的表現是:AlertDialog彈出時,背景是黑色的,但是當我們點選背景,AlertDialog會消失,證明程式不僅響應AlertDialog的操作,還響應其他操作,其他程式沒有被阻塞,這說明了AlertDialog是非阻塞式對話框;PopupWindow彈出時,背景沒有什麼變化,但是當我們點選背景的時候,程式沒有響應,隻允許我們操作PopupWindow,其他操作被阻塞。
我們在寫程式的過程中可以根據自己的需要選擇使用Popupwindow或者是Dialog。
本文永久位址:http://blog.it985.com/6437.html
本文出自 IT985部落格 ,轉載時請注明出處及相應連結。
Android中style和theme的差別
在學習Xamarin android的過程中,最先開始學習的還是熟練掌握android的六大布局-LinearLayout .RelativeLayout.TableLayout.FrameLayou ...
Android 中PopupWindow使用 (轉)
參考學習後遇到問題: 要引用:有好幾個,可以用錯誤提示解決: import android.widget.PopupWindow; import android.widget.Toast; Activ ...
Android中制作自定義dialog對話框的執行個體
http://www.jb51.net/article/83319.htm 這篇文章主要介紹了Android中制作自定義dialog對話框的執行個體分享,安卓自帶的Dialog顯然不夠用,因而我們要繼 ...
【整理】Android中的gravity和layout_gravity差別
[背景] 在Android中,想要設定個按鈕的水準對齊,都累死了: [已解決]ADT中已設定TableLayout布局的情況下如何設定按鈕居中對齊 是以現在有必要搞清楚,到底gravity和la ...
Android中px和dip的差別
在Android手機的誕生之初,由于Android系統是開源的,一開始便有衆多的OEM廠商對Android手機進行深度定制,于是乎Android手機的皮膚和螢幕大小都變得百花齊放,這可苦逼了我們這群開 ...
淺談Android中Serializable和Parcelable使用差別
版權聲明:本文出自汪磊的部落格,轉載請務必注明出處. 一.概述 Android開發的時候,我們時長遇到傳遞對象的需求,但是我們無法将對象的引用傳給Activity或者Fragment,我們需要将這些對象 ...
【Android】android中Invalidate和postInvalidate的差別
Android中實作view的更新有兩組方法,一組是invalidate,另一組是postInvalidate,其中前者是在UI線程自身中使用,而後者在非UI線程中使用. Android提供了Inva ...
android中Invalidate和postInvalidate的差別
Android中實作view的更新有兩組方法,一組是invalidate,另一組是postInvalidate,其中前者是在UI線程自身中使用,而後者在非UI線程中使用. Android提供了Inva ...
Android中PopupWindow用法
參考資料連結:http://developer.android.com/reference/android/widget/PopupWindow.html 在Android中有很多級别的Window, ...
随機推薦
android中versionCode&;versionName
原文來自:http://blog.csdn.net/wh_19910525/article/details/8660416 ,略有修改 一.概述 Android的版本可以在androidmainfes ...
杭電ACM2058--The sum problem
http://acm.hdu.edu.cn/showproblem.php?pid=2058 以為簡單的窮舉就完了,結果是一直Time Limit Exceeded.. 這是代碼: #include ...
SharePoint的安裝配置
安裝環境 1. Window server 2008 r2(sp2) OS.2. MS SQL Server 2008 r2.3. Office2010.4. IIS7以上.5. 确認伺服器已經加入域 ...
mysql 函數在源碼中的定義
大牛那海藍藍 MySQL提供了較為豐富的SQL語句,用以支援MySQL提供的主要功能.在資料庫内部,MySQL又是怎麼知道自己能夠處理哪些對象.處理哪些事情的? 如果我們輸入一條SQL語句,MySQL ...
nodejs新手教程中upload file的問題
可參見: http://cnodejs.org/topic/50234890f767cc9a51f88481 request.setEncoding("utf8");應注釋掉.
用for while 成績的有效輸入
#include "stdio.h" void main() { int score,s; printf("請輸入你的成績:"); scanf("%d ...
Spark Streaming 調優指南
SparkStreaming是架構在SparkCore上的一個"應用",SparkStreaming主要由DStreamGraph.Job的生成.資料的接收和導入以及容錯四大子產品組 ...
WordPress 本地建站
1.搭建環境 appserv下載下傳連結:http://www.onlinedown.net/soft/35753.htm 安裝 1.直接運作 2.選擇安裝路徑 3.選擇所需環境,若已經有,則可不勾選 4 ...
Scala學習筆記(2)-類型注意
Scala類型注意事項: 1.Any是絕對的根,所有的其他可執行個體化類型均有AnyVal和AnyRef派生. 2.所有AnyVal的類型成為值類型(所有數值類型.char.Booble和Unit) 3. ...
tcpdump 學習
簡介 用簡單的話來定義tcpdump,就是:dump the traffic on a network,根據使用者的定義對網絡上的資料包進行截獲的包分析工具. tcpdump可以将網絡中傳送的資料包的 ...