PopupWindow和AlertDialog区别

本文详细比较了Android中AlertDialog与PopupWindow的区别。AlertDialog是非阻塞的,位置固定且提供了多种预设选项,如设置图标、内容及不同类型的按钮。而PopupWindow是阻塞的,可以根据需求自由定位,并支持更灵活的布局定制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

区别如下:
1.  AlertDialog是非阻塞线程的,AlertDialog弹出的时候,后台可是还可以做其他事情
PopupWindow是阻塞线程的,PopupWindow弹出时,程序会等待,在PopupWindow退出前,程序一直等待,
只有当我们调用了dismiss方法的后,PopupWindow退出,程序才会向下执行。
2.AlertDialog的位置固定
	setIcon :为对话框设置图标
	setMessage:为对话框设置内容
	setView : 给对话框设置自定义样式
	setItems :设置对话框要显示的一个list,一般用于显示几个命令时
	setMultiChoiceItems :用来设置对话框显示一系列的复选框
	setNeutralButton :普通按钮
	setNegativeButton :对话框添加"No"按钮
	create : 创建对话框
	show :显示对话框
	setTitle("对话框的标题"). 
	setMessage("对话框的内容"). 
示例:

  
new AlertDialog.Builder(MainActivity.this)
.setTitle("简易对话框") 
.setMessage("对话框文本") 
.setPositiveButton("确定", new DialogInterface.OnClickListener() {  
   @Override  
 public void onClick(DialogInterface dialog, int which) {     
  /*  
* 第一个参数:上下文对象。可用getApplicationContext()或当前Activity. this 
  * 第二个参数:要显示的字符串  
* 第三个参数:显示时间的长短。Toast有默认的两个LENGTH_SHORT(短)和LENGTH_LONG(长),也可以使用毫秒2000ms 
* */  
Toast.makeText(MainActivity.this,"按了确定按钮",Toast.LENGTH_SHORT).show();  
 }  
 })  
 .setNegativeButton("取消", new DialogInterface.OnClickListener() {        
@Override  
  public void onClick(DialogInterface dialog, int which) {     
Toast.makeText(MainActivity.this,"按了取消按钮",Toast.LENGTH_SHORT).show();
   }  
 })
.show();
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);
PopupWindow示例:
Android PopupWindow详解
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值