专栏首页码客Dialog和PopupWindow的区别

Dialog和PopupWindow的区别

前言

Android中的对话框有多种:

  • Toast
  • OptionsMenu
  • PopupWindow
  • Dialog

它们都可以实现弹窗功能,但是他们之间有一些差别,下面我们先对比DialogPopuWindow区别。

对比

  • Popupwindow在显示之前一定要设置宽高,Dialog无此限制。
  • Popupwindow默认不会响应物理键盘的back,除非显示设置了popup.setFocusable(true); 而在点击back的时候,Dialog会消失。
  • Popupwindow不会给页面其他的部分添加蒙层,而Dialog会。
  • Popupwindow没有标题,Dialog默认有标题,可以通过dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);取消标题
  • 二者显示的时候都要设置Gravity。如果不设置,Dialog默认是Gravity.CENTER。
  • 二者都有默认的背景,都可以通过setBackgroundDrawable(new ColorDrawable(android.R.color.transparent));去掉。

其中最本质的差别就是:

  • AlertDialog是非阻塞式对话框:AlertDialog弹出时,后台还可以做事情;
  • PopupWindow是阻塞式对话框:PopupWindow弹出时,程序会等待, 在PopupWindow退出前,程序一直等待,只有当我们调用了dismiss方法的后,PopupWindow退出,程序才会向下执行。

这两种区别的表现是:

  • AlertDialog弹出时,背景是黑色的,但是当我们点击背景,AlertDialog会消失,证明程序不仅响应AlertDialog的操作,还响应其他操作,其他程序没有被阻塞,这说明了AlertDialog是非阻塞式对话框;
  • PopupWindow弹出时,背景没有什么变化,但是当我们点击背景的时候,程序没有响应,只允许我们操作PopupWindow,其他操作被阻塞。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • pmbok笔记 第十一章——项目风险管理

    yeedomliu
  • 快排

    思路:快速排序每次都是定位一个元素在数组中的绝对位置,简单说就是一个元素,在排好序后他的位置是一定的(当然快排是不稳定的),你每次选定一个元素,然后定位其排好序...

    用户6055494
  • 项目经理思维导图——2 如何做好项目复盘

    yeedomliu
  • Java synchronized 关键字,用法有道

    在Java并发系列的文章中,这个是第二篇文章。在前面的一篇文章中,我们学习了Java中的Executor池和Excutors的各种类别。

    挨踢小子部落阁
  • 线程源码分析之线程库的初始化和线程的管理(基于linuxthreads2.0.1)

    在执行main函数之前会先执行__pthread_initialize函数,该函数做的事情主要有

    theanarkh
  • 像数据科学家一样思考:12步指南(下)

    我们的数据科学过程的第6步是数据的统计分析。统计方法通常被认为是做好数据科学所需技能和知识的近一半,或至少三分之一。另一个较大的部分是软件开发和/或应用程序,其...

    AiTechYun
  • 腾讯云哪个地域节点好?腾讯云服务器地域的选择方法

    腾讯云CVM云服务器地域哪个好?如何选择腾讯云服务器地域节点?哪个快网分享腾讯云服务器地域的选择方法:

    上云小秘书
  • VUE组件开发规范

    “ Vue组件提供了丰富多样的配置可供开发者使用,不同的配置项书写顺序并不影响实际运行效果,但这缺给后期维护带来了一定的困扰,因此在蓝鲸产品中心我们规范了配置...

    腾讯NEXT学位
  • 用Python分析我国高等教育分布的不均衡

    当前正值开学季,各个心怀梦想的学子们都迈入了自己理想中的大学。只是当我们站在象牙塔前,再回首凝望高中生活,一路走来,是不是会感慨万千呢。都说高考是普通大众改变命...

    数据森麟
  • IPv6系列-详解自动分配IPv6地址

    深入研究自动分配IPv6地址的Stateless(无状态)与Stateful(有状态)方式

    小慢哥Linux运维

扫码关注云+社区

领取腾讯云代金券