持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第14天,点击查看活动详情
前面我们介绍了弹框的最系统的实现方式,也就是系统自带的弹框Dialog,通过介绍可以知道一般使用起来都是自定义为主,不管是直接使用还是通过继承的方式都需要设置它的现在内容,使用起来也比较方便,今天我们主要介绍另一种系统的弹框AlterDialog,通过字面意思可以简单理解成它是一种警示性的弹框,没错,它的定义就是:置顶于所有界面元素之上的,能够屏蔽掉其他控件的交互能力,因此AlertDialog一般是用于提示一些非常重要的内容或者警告信息。
AlertDialog的使用
AlertDialog的使用方式和Dialog的使用方式不一样,它是一种构造者模式,通过创建一个Build的构造器完成初始化。下面我们就来简单介绍下它的使用方式。
public class MainActivity extends Activity {
private AlertDialog dialog;
private AlertDialog.Builder builder
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn_dialog.setOnClickListener{ ->
initDialog();
}
}
private void initDialog(){
builder = new AlertDialog.Builder(MainActivity.this);
builder.setMessage("这是一个AlterDialog的弹框");
builder.setTitle("这是AlterDialog的标题");
builder.setView(R.layout.layout_alert);
builder.setPositiveButton("知道了", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
alertDialog.dismiss();
}
});
dialog = builder.create();
dialog.show();
}
上面简单实现了一个文字弹框,AlertDialog也是支持设置Icon的,setIcon就是设置显示图标的。它还有其他的一些基本的设置方法,这里简单介绍下,上面已经设置message、title、icon了剩下的我们经常用的属性方法如下:
1)setCancelable: 这个属性字面意思就是设置是否可取消。\
2)setPositiveButton:字面意思就是类似确定的按钮的意思,是一种积极相应的按钮。
2) setNegativeButton:和setPositiveButton想法,有确定就有取消,它的意思就是类似取消的消极相应的按钮
3) setNeutralButton:有消极,积极就有中立,这个按钮就是这个意思
4) setOnShowListener:这个是AlertDialog的弹框显示的监听,可以在这里处理弹框显示出来后的一些操作和逻辑处理;
5) setOnCancelListener:和setOnShowListener相反,它是对话框消失时触发的事件。
当然这些都不是必须要实现的,可以根据业务的需要来选择实现哪个。
AlertDialog的功能还不止这些,它有自带的可以显示列表的属性,setItems,只要把列表数据传入就可以展示出列表的数据弹框。setItems的方法传参有2个,一个是int类型,一个是字符数组,int类型是让传的一个resID,也就是通过xml方式的列表数据,字符数组就是类似这样的String[],具体的实现大家可以尝试写写,这里不多举例了。
AlertDialog还有其他弹框样式,像复选框,单选框等等,当然它也是支持自定义的,上面的setView方法就是自定义的实现。
这里有个注意事项,就是在Android7以后,AlertDialog的宽度是固定的,在布局里设置了宽度都是不生效的,高度可以自定义设置,所以如果有这方法的需求,可以尝试通过window的setLayout方法来改变当前窗口的大小。