概述
对话框(Dialog)是一个小窗口,在Android系统开发中经常会用到,它提示用户做决定或者输入一些东西,对话框并不填充屏幕,是一个模态(Modal)窗口。Dialog类是所有对话框的基类,应避免直接实例化对话框,通常使用它的子类(AlertDialog,DatePickerDialog or TimePickerDialog),本文主要讲解的是AlertDialog。
什么是AlertDialog?
可以显示标题、最多三个按钮、可供选择的项目列表或自定义布局的对话框。
创建步骤
- 构建一个Builder(AlertDialog.Builder)。
- 设置对话框标题(setTitle),内容信息(setMessage)。
- 设置对话框显示的按钮,最多三个按钮(setPositiveButton,setNegativeButton)。
- 调用方法,创建对话框对象(create)。
- 显示对话框(show)。
涉及知识点
- AlertDialog.Builder 对话框构造器,可以进行对话框进行设置,并创建对话框对象。
- setTitle 设置对话框标题,setMessage设置对话框显示的文本内容
- setNegativeButton 设置对话框显示的否定按钮(Cancel), setPositiveButton设置对话框显示的肯定按钮(OK)
- show() 显示对话框
- setItems 设置对话框的列表内容
- setSingleChoiceItems 设置单选按钮的列表项,setMultiChoiceItems设置多选按钮的列表项
- setView 设置自定义视图的对话框
默认对话框
如下图所示(显示了标题,内容,两个按钮):
关键代码如下:
1 /** 2 * 默认对话框事件响应方法 3 * 4 * @param v 5 */ 6 public void showDefaultDialog(View v) { 7 //创建一个Builder 8 AlertDialog.Builder builder = new AlertDialog.Builder(this); 9 //设置对话框标题 10 builder.setTitle("提示"); 11 //设置对话框内容 12 builder.setMessage("这是一个对话框的提示"); 13 //积极按钮? 14 builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 15 @Override 16 public void onClick(DialogInterface dialog, int which) { 17 Toast.makeText(MainActivity.this, "你选择了OK", Toast.LENGTH_SHORT).show(); 18 } 19 }); 20 //消极按钮 21 builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 22 @Override 23 public void onClick(DialogInterface dialog, int which) { 24 Toast.makeText(MainActivity.this, "你选择了Cancel", Toast.LENGTH_SHORT).show(); 25 } 26 }); 27 //创建一个对话框 28 AlertDialog dialog = builder.create(); 29 //显示一个对话框 30 dialog.show(); 31 }
列表对话框
如下图所示(弹出的对话框内容展示为一个列表)用户通过列表进行选择
关键代码如下:
1 /** 2 * 列表对话框响应事件 3 * 4 * @param v 5 */ 6 public void showListDialog(View v) { 7 //构件一个对话框Builder 8 AlertDialog.Builder builder = new AlertDialog.Builder(this); 9 //设置标题 10 builder.setTitle(R.string.pick_color); 11 //将资源文件转化为数组对象 12 arr_colors = getResources().getStringArray(R.array.arr_colors); 13 //设置列表内容和点击事件 14 builder.setItems(R.array.arr_colors, new DialogInterface.OnClickListener() { 15 @Override 16 public void onClick(DialogInterface dialog, int which) { 17 Toast.makeText(MainActivity.this, "你选择了[" + arr_colors[which] + "]", Toast.LENGTH_SHORT).show(); 18 } 19 }); 20 //创建一个对话框 21 AlertDialog dialog = builder.create(); 22 //显示一个对话框 23 dialog.show(); 24 }
单选按钮对话框
如下图所示(用户通过单选按钮进行选择):
关键代码如下:
1 /** 2 * 单选框对话框按钮事件 3 * 4 * @param v 5 */ 6 public void showSingleDialog(View v) { 7 //构件一个对话框Builder 8 AlertDialog.Builder builder = new AlertDialog.Builder(this); 9 //设置标题 10 builder.setTitle(R.string.pick_color); 11 //将资源文件转化为数组对象 12 arr_colors = getResources().getStringArray(R.array.arr_colors); 13 checkedItems=new int[arr_colors.length]; 14 //设置列表内容和点击事件,第二个参数checkedItem表示默认选中项 15 builder.setSingleChoiceItems(R.array.arr_colors, 0, new DialogInterface.OnClickListener() { 16 @Override 17 public void onClick(DialogInterface dialog, int which) { 18 for(int i=0;i<checkedItems.length;i++){ 19 if(i==which){ 20 checkedItems[i]=1; 21 }else{ 22 checkedItems[i]=0; 23 }