PopupWindwo和AlertDialog的区别

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);

时间: 2024-10-14 23:22:37

PopupWindwo和AlertDialog的区别的相关文章

PopupWindow的代码实现,以及和AlertDialog的区别

PopupWindow和AlertDialog本质区别为:AlertDialog是非阻塞式对话框:AlertDialog弹出时,后台还可以做事情:而PopupWindow是阻塞式对话框:PopupWindow弹出时,程序会等待,在PopupWindow退出前,程序一直等待,只有当我们调用了dismiss方法的后,PopupWindow退出,程序才会向下执行.这两种区别的表现是:AlertDialog弹出时,背景是黑色的,但是当我们点击背景,AlertDialog会消失,证明程序不仅响应Alert

PopUpWindow使用详解(一)——基本使用

前言:不要嫌前进的慢,只要一直在前进就好. 有同学讲到想要知道PopUpWindow的知识,这里就给大家讲一讲PopUpWindow的基本用法和原理吧.这段时间博客可能会更新比较慢,因为你懂的 !!-_- ,往左看公告,嘿嘿. 先看一下我们要做的效果: 这个效果很容易理解:当点击btn时,在底部弹出PopupWindow,然后点击各个item弹出对应toast. 一.概述 1.PopupWindow与AlertDialog的区别 最关键的区别是AlertDialog不能指定显示位置,只能默认显示

Android Dialog 的一些特性

1. Dialog 与 AlertDialog 的区别. AlertDialog 是一种特殊形式的 Dialog.这个类中,我们可以添加一个,两个或者三个按钮,可以设置标题.所以,当我们想使用 AlertDialog 默认的按钮形式,用 AlertDialog 更加方便,而且有一个类 AlertDialog.Builder 很方便创建一个 AlertDialog. 2. Dialog 与 AlertDialog 写代码时需注意的事项. 我们可以给一个 Dialog 用自定义的 Layout.有两

Android Exception 9(requestFeature() must be called before adding content)

08-05 17:36:12.799: W/System.err(10378): java.lang.reflect.InvocationTargetException08-05 17:36:12.799: W/System.err(10378):     at java.lang.reflect.Method.invokeNative(Native Method)08-05 17:36:12.809: W/System.err(10378):     at java.lang.reflect.

步步为营_Android开发课[26]_用户界面之PopupWindow(弹出窗口)

Focus on technology, enjoy life!-- QQ:804212028 浏览链接:http://blog.csdn.net/y18334702058/article/details/44624305 主题:用户界面之PopupWindow(弹出窗口) - PopupWindow和AlertDialog的区别: AlertDialog是非阻塞式的:AlertDialog弹出时,后台还可以做事情. PopupWindow是阻塞式的:在PopupWindow退出前,只允许我们操

对话框AlertDialog的dismiss和cancel区别

先上cancel方法源码和注解 /** * Cancel the dialog. This is essentially the same as calling {@link #dismiss()}, but it will * also call your {@link DialogInterface.OnCancelListener} (if registered). */ public void cancel() { if (!mCanceled && mCancelMessage

Android之自定义AlertDialog和PopupWindow实现(仿微信Dialog)

我们知道,在很多时候,我们都不用Android内置的一些控件,而是自己自定义一些自己想要的控件,这样显得界面更美观. 今天主要是讲自定义AlertDialog和popupWindow的使用,在很多需求中,我们往往需要这样一个功能,就是点击一个按钮或者其它控件,弹出一个对话框,让用户可以在这个对话框中做一些事,比如输入.选择.提示.....等等,那么,这个弹出对话框的功能我们都知道可以用popupWindow和AlertDialog实现,的却,popupWindow被称为万能的,因为它的布局都是我

Android开发——diglog cancel与dismiss方法区别

AlertDialog dismiss 和 cancel方法的区别 AlertDialog使用很方便,但是有一个问题就是:dismiss方法和cancel方法到底有什么不同? 今天有时间,看了看源码(其实源码并不是全都那么深奥的!~~). AlertDialog继承与Dialog,现在各位看看结构图: 然后在Dialog类中找到了dismiss和cancel方法的实现.重要看dismiss的源码: Java代码   public void cancel() { if (mCancelMessag

android中activity.this跟getApplicationContext的区别

转载: http://www.myexception.cn/android/1968332.html android中activity.this和getApplicationContext的区别 在android中常常会遇到与context有关的内容 浅论一下context : 在语句 AlertDialog.Builder builder = new AlertDialog.Builder(this); 中,要求传递的 参数就是一个context,在这里我们传入的是this,那么这个this究