自定义Dialog效果图
首先说如何自定义Dialog,并且用infale加载xml布局。要想用下面的设置监听器的方式(监听与实现分离),Activity必须implements View.OnClickListener接口
如下代码,注释详细。
//创建Dialog对象
AlertDialog.Builder builder=new AlertDialog.Builder(this);
//自定义dialog
dialog = builder.create();
//点击对话框以外不会退出,但返回会退出
dialog.setCanceledOnTouchOutside(false);
//builder.setCancelable(false);这个被我注释掉了,它是代表点击任何地方Dialog都不会消失,点击返回也不会消失
//通过infalte加载xml布局,这里,R.layout.dialog_set_pwd时我的xml布局
View view=View.inflate(this,R.layout.dialog_set_pwd,null);
//这里是初始化我的xml上的控件,注意一定要view.findViewById()
bt_cancel = view.findViewById(R.id.bt_cancel);
bt_submit = view.findViewById(R.id.bt_submit);
et_set_pwd = view.findViewById(R.id.et_set_pwd);
et_confirm_pwd = view.findViewById(R.id.et_confirm_pwd);
//这里设置监听器,因为后面我要对button操作
bt_cancel.setOnClickListener(this);
bt_submit.setOnClickListener(this);
//将View对象加载到dialog上
dialog.setView(view);
//显示dialog
dialog.show();
接下来该对监听的按钮进行处理,你想要怎么处理就在case中添加什么,注意case后的控件一定要在上面监听才能处理。
public void onClick(View v){
switch (v.getId()){
//如果点击这个按钮,就进行以下操作
case R.id.bt_cancel:
你进行的操作
break;
//如果点击这个按钮,就进行以下操作
case R.id.bt_submit:
你进行的操作
break;
}
}