先简单介绍一下三种对话框的区别:
AlertDialog : Dialog继承Object,异步调用,不会阻塞UI线程。
Popupwindow:popupwindow是阻塞式对话框,dialog弹出时 后台还可以进行很多的操 作,而popupwindow弹出是 后台进程是阻塞的,要一直等待popupwindow 消失 才会进行操作。
BottomSheetDialog:一个自定义的从底部滑入的对话框。
一、AlertDialog 的使用:
setTitle :为对话框设置标题
setIcon :为对话框设置图标
setMessage:为对话框设置内容
setView : 给对话框设置自定义样式
setItems :设置对话框要显示的一个list,一般用于显示几个命令时
setMultiChoiceItems :用来设置对话框显示一系列的复选框
setSingleChoiceItems :用来设置对话框显示一系列的单选框
setNeutralButton :普通按钮
setPositiveButton :给对话框添加"Yes"按钮
setNegativeButton :对话框添加"No"按钮
create : 创建对话框
show :显示对话框
- 有多个按钮
setPositiveButton 设置一个确定按钮
setNegativeButton 设置一个取消按钮
setNeutralButton 设置一个普通按钮
AlertDialog alertDialog2 = new AlertDialog.Builder(this)
.setTitle("这是标题")
.setMessage("有多个按钮")
.setIcon(R.mipmap.ic_launcher)
.setPositiveButton("确定", new DialogInterface.OnClickListener() {//添加"Yes"按钮
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(AlertDialogActivity.this, "这是确定按钮", Toast.LENGTH_SHORT).show();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {//添加取消
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(AlertDialogActivity.this, "这是取消按钮", Toast.LENGTH_SHORT).show();
}
})
.setNeutralButton("普通按钮", new DialogInterface.OnClickListener() {//添加普通按钮
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(AlertDialogActivity.this, "这是普通按钮按钮", Toast.LENGTH_SHORT).show();
}
})
. create();
alertDialog2.show();
-
自定义View
View view_dialog= View.inflate(this, R.layout.activity_alter_dialog_setview, null); AlertDialog dialog = new AlertDialog.Builder(this, R.style.TransparentDialog).create(); dialog.show(); // 设置点击可取消 dialog.setCancelable(true); // 获取Window对象 Window window = dialog.getWindow(); // 设置对话框的大小 android.view.WindowManager.LayoutParams layoutParams = dialog.getWindow().getAttributes(); DisplayMetrics dm = getResources().getDisplayMetrics(); //获取该弹窗的参数值 int displayWidth = dm.widthPixels; int displayHeight = dm.heightPixels; layoutParams.width = (int) (displayWidth * 0.8); //宽度设置为屏幕的0.8 dialog.getWindow().setAttributes(layoutParams); window.setContentView(view_dialog);
定义AlertDialog透明样式
colors.xml
#00000000
二、Popupwindow的使用:
View inflate = LayoutInflater.from(context).inflate(R.layout.house_share_popupwindow, null);
popupWindow = new PopupWindow(inflate, LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
popupWindow.setBackgroundDrawable(new ColorDrawable(Color.WHITE));
//设置点击弹窗外隐藏自身
popupWindow.setFocusable(true);
popupWindow.setOutsideTouchable(true);
//设置位置
popupWindow.showAtLocation(inflate, Gravity.BOTTOM, 0, 0);
//设置PopupWindow的View点击事件
TextView mTvWx = inflate.findViewById(R.id.tv_wx);
TextView mTvPyq = inflate.findViewById(R.id.tv_pyq);
布局
三、BottomSheetDialog的使用
BottomSheetDialog的使用非常简单,几行代码就搞定!
BottomSheetDialog bottomSheet = new BottomSheetDialog(this);//实例化
bottomSheet.setCancelable(true);//设置点击外部是否可以取消
bottomSheet.setContentView(R.layout.activity_layout_1);//设置对框框中的布局
bottomSheet.show();//显示弹窗 }
带圆角的弹窗,首先要设置透明背景
BottomSheetDialog bottomSheet = new BottomSheetDialog(this,R.style.BottomSheetDialog);
colors.xml
#00000000
在根布局的view上设置background
android:background="@drawable/shape_sheet_dialog_bg"
shape_sheet_dialog_bg
< /shape>
好了,三种对话框的简单使用就已经结束了,底部弹窗的方式我还是推荐第三种,毕竟简单方便。