Android中Popupwindow和Dialog的区别
答案:2 悬赏:40
解决时间 2021-02-20 08:57
- 提问者网友:相思瘸子
- 2021-02-19 18:02
Android中Popupwindow和Dialog的区别
最佳答案
- 二级知识专家网友:闲懒诗人
- 2021-02-19 19:31
区别如下:
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,其他操作被阻塞。
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,其他操作被阻塞。
全部回答
- 1楼网友:樣嘚尐年
- 2021-02-19 19:47
android中的对话框有两种:popupwindow和alertdialog。它们都可以实现弹窗功能,但是他们之间有一些差别,下面总结了一点。<br>(1)popupwindow在显示之前一定要设置宽高,dialog无此限制。<br>(2)popupwindow默认不会响应物理键盘的back,除非显示设置了popup.setfocusable(true);而在点击back的时候,dialog会消失。<br>(3)popupwindow不会给页面其他的部分添加蒙层,而dialog会。<br>(4)popupwindow没有标题,dialog默认有标题,可以通过dialog.requestwindowfeature(window.feature_no_title);取消标题<br>(5)二者显示的时候都要设置gravity。如果不设置,dialog默认是gravity.center。<br>(6)二者都有默认的背景,都可以通过setbackgrounddrawable(new colordrawable(android.r.color.transparent));去掉。<br>其中最本质的差别就是:alertdialog是非阻塞式对话框:alertdialog弹出时,后台还可以做事情;而popupwindow是阻塞式对话框:popupwindow弹出时,程序会等待,在popupwindow退出前,程序一直等待,只有当我们调用了dismiss方法的后,popupwindow退出,程序才会向下执行。这两种区别的表现是:alertdialog弹出时,背景是黑色的,但是当我们点击背景,alertdialog会消失,证明程序不仅响应alertdialog的操作,还响应其他操作,其他程序没有被阻塞,这说明了alertdialog是非阻塞式对话框;popupwindow弹出时,背景没有什么变化,但是当我们点击背景的时候,程序没有响应,只允许我们操作popupwindow,其他操作被阻塞。<br>我们在写程序的过程中可以根据自己的需要选择使用popupwindow或者是dialog。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯