PopupWindow与dialog的区别

本质区别为:

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

PopupWindow pw = new PopupWindow(view,width,height);

pw.setContentView(popupconten);//重新设置PopupWindow的内容

pw.setFocusable(true);//默认是false,为false时,PopupWindow没有获得焦点能力,如果这是PopupWindow的内容中有EidtText,需要输入,这是是无法输入的;只有为true的时候,PopupWindow才具有获得焦点能力,EditText才是真正的EditText。

pw.setAsDropDown(View view);//设置PopupWindow弹出的位置。

AlertDialog的构造方法全部是Protected的,所以不能直接通过new一个AlertDialog来创建出一个AlertDialog。

要创建一个AlertDialog,就要用到AlertDialog.Builder中的create()方法。

使用AlertDialog.Builder创建对话框需要了解以下几个方法:

setTitle :为对话框设置标题

setIcon :为对话框设置图标

setMessage:为对话框设置内容

setView : 给对话框设置自定义样式

setItems :设置对话框要显示的一个list,一般用于显示几个命令时

setMultiChoiceItems :用来设置对话框显示一系列的复选框

setNeutralButton :普通按钮

setPositiveButton :给对话框添加"Yes"按钮

setNegativeButton :对话框添加"No"按钮

create : 创建对话框

show :显示对话框

Dialog alertDialog = new AlertDialog.Builder(this).

setTitle("对话框的标题").

setMessage("对话框的内容").

setIcon(R.drawable.ic_launcher).

create();

alertDialog.show();

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,523评论 0 17
  • 简介 1、 PopupWindow在android.widget包下,弹出窗口的形式展示。官方文档对该控件的描述是...
    alsheng阅读 2,560评论 0 3
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,334评论 25 708
  • 有了一定的追求,就要去落实。本来今天回来已经很晚。想给自己找个借口不写,看到鼓励我的人和关注我的粉丝。想了想还...
    静远庭阅读 278评论 0 2
  • 人影在幽暗厅堂空晃 四壁摇烁温柔困惶 女孩在盆花秘处跳舞 自在又欢喜地 外面落雨 楼外落着寂寞明亮的雨 落着无始以...
    厚灵阅读 282评论 0 0