博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PopupWindwo和AlertDialog的区别
阅读量:6259 次
发布时间:2019-06-22

本文共 963 字,大约阅读时间需要 3 分钟。

 
AlertDialog 是非阻塞式对话框:AlertDialog弹出时,后台还可以做事情;而PopupWindow是阻塞式对话框:PopupWindow弹出时,
程序会等 待,在PopupWindow退出前,程序一直等待,只有当我们调用了dismiss方法的后,PopupWindow退出,程序才会向下执行。
这两种区 别的表现是:AlertDialog弹出时,背景是黑色的,但是当我们点击背景,AlertDialog会消失,证明程序不仅响应AlertDialog 的操作,
还响应其他操作,其他程序没有被阻塞,这说明了AlertDialog是非阻塞式对话框;PopupWindow弹出时,背景没有什么变化,但是 当我们
点击背景的时候,程序没有响应,只允许我们操作PopupWindow,其他操作被阻塞。
 
  1. Android的对话框有两种:PopupWindow和AlertDialog。

 

它们的不同点在于:AlertDialog的位置固定,而PopupWindow的位置可以随意

AlertDialog是非阻塞线程的,AlertDialog弹出的时候,后台可是还可以做其他事情的哦。 

而PopupWindow是阻塞线程的, 这就意味着在我们退出这个弹出框之前,程序会一直等待

PopupWindow的位置按照有无偏移分,可以分为偏移和无偏移两种;按照参照物的不同,可以分为相对于某个控件(Anchor锚)和相对于父控件。具体如下
showAsDropDown(View anchor):相对某个控件的位置(正左下方),无偏移
showAsDropDown(View anchor, int xoff, int yoff):相对某个控件的位置,有偏移
showAtLocation(View parent, int gravity, int x, int y):相对于父控件的位置(例如正中央Gravity.CENTER,下方Gravity.BOTTOM等),可以设置偏移或无偏移

 

LayoutInflater layoutInflater = LayoutInflater.from(this);

      View popupWindow = layoutInflater.inflate(R.layout.popup, null);

转载地址:http://tjqsa.baihongyu.com/

你可能感兴趣的文章
replace和replaceAll小题目
查看>>
下载python3.6,进行编译安装,运行django程序
查看>>
PCA人脸识别学习笔记---代码篇
查看>>
grep
查看>>
归档备份被删,GoldenGate无法抽取数据
查看>>
Could not create the view: An unexpected exception was thrown.
查看>>
codeforces 445A
查看>>
基础语法
查看>>
多线程和CPU的关系
查看>>
005 -- DuLinkList_add nodes, delete node, Caser print..
查看>>
HashMap、TreeMap、LinkedHashMap、hashtable的区别
查看>>
ajax之百度 应用实例
查看>>
单行文本溢出、多文本溢出
查看>>
yarn的学习-2-从 npm 迁移到 yarn-包管理工具
查看>>
vagrant特性——基于docker开发环境(docker和vagrant的结合)-1-基本使用
查看>>
SQL 学习——简序以及学习路线
查看>>
Quoit Design
查看>>
iOS---后台运行机制详解
查看>>
python-装饰器的最终形态和固定格式 语法糖
查看>>
iphone配置实用工具iPhone Configuration Utility
查看>>