1 AlertDialog.Builder builder=new AlertDialog.Builder(this);
2 builder.setTitle("历史记录").setIcon(R.mipmap.info).setMessage(str)
3 .setPositiveButton("ok", new DialogInterface.OnClickListener() {
4 @Override
5 public void onClick(DialogInterface dialog, int which) {
6 }
7 });
8 AlertDialog ad=builder.create();
9 ad.show();
上面这段代码显示的结果如图所示。
简单记录一下AlertDialog的用法:
下面的内容整理自:https://blog.csdn.net/streate/article/details/90899515
1.普通提示对话框
其上主要是提示标题,消息主体,底部“取消”、“确定”等按钮。
1 /** 2 * 提示对话框 3 */ 4 public void tipDialog() { 5 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 6 builder.setTitle("提示:"); 7 builder.setMessage("这是一个普通对话框,"); 8 builder.setIcon(R.mipmap.ic_launcher); 9 builder.setCancelable(true); //点击对话框以外的区域是否让对话框消失 10 11 //设置正面按钮 12 builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { 13 @Override 14 public void onClick(DialogInterface dialog, int which) { 15 Toast.makeText(MainActivity.this, "你点击了确定", Toast.LENGTH_SHORT).show(); 16 dialog.dismiss(); 17 } 18 }); 19 //设置反面按钮 20 builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { 21 @Override 22 public void onClick(DialogInterface dialog, int which) { 23 Toast.makeText(MainActivity.this, "你点击了取消", Toast.LENGTH_SHORT).show(); 24 dialog.dismiss(); 25 } 26 }); 27 //设置中立按钮 28 builder.setNeutralButton("保密", new DialogInterface.OnClickListener() { 29 @Override 30 public void onClick(DialogInterface dialog, int which) { 31 Toast.makeText(MainActivity.this, "你选择了中立", Toast.LENGTH_SHORT).show(); 32 dialog.dismiss(); 33 } 34 }); 35 36 37 AlertDialog dialog = builder.create(); //创建AlertDialog对象 38 //对话框显示的监听事件 39 dialog.setOnShowListener(new DialogInterface.OnShowListener() { 40 @Override 41 public void onShow(DialogInterface dialog) { 42 Log.e(TAG, "对话框显示了"); 43 } 44 }); 45 //对话框消失的监听事件 46 dialog.setOnCancelListener(new DialogInterface.OnCancelListener() { 47 @Override 48 public void onCancel(DialogInterface dialog) { 49 Log.e(TAG, "对话框消失了"); 50 } 51 }); 52 dialog.show(); //显示对话框 53 }
使用到的方法
- setTitle:设置对话框的标题,比如“提示”、“警告”等;
- setMessage:设置对话框要传达的具体信息;
- setIcon: 设置对话框的图标;
- setCancelable: 点击对话框以外的区域是否让对话框消失,默认为true;
- setPositiveButton:设置正面按钮,表示“积极”、“确认”的意思,第一个参数为按钮上显示的文字,下同;
- setNegativeButton:设置反面按钮,表示“消极”、“否认”、“取消”的意思;
- setNeutralButton:设置中立按钮;
- setOnShowListener:对话框显示时触发的事件;
- setOnCancelListener:对话框消失时触发的事件。
2.普通列表对话框
列表对话框的内容就是一列显示内容,
需要用到构造器的
setItems方法,
参数一是列表数据,参数二是点击监听接口,
我们要实现这样一个小功能,用户在点击某一项时弹出一个Toast提示选中项的内容。
1 /** 2 * 列表对话框 3 */ 4 private void itemListDialog() { 5 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 6 builder.setTitle("选择你喜欢的课程:"); 7 builder.setCancelable(true); 8 final String[] lesson = new String[]{"语文", "数学", "英语", "化学", "生物", "物理", "体育"}; 9 builder.setIcon(R.mipmap.ic_launcher); 10 builder.setIcon(R.mipmap.tab_better_pressed) 11 .setItems(lesson, new DialogInterface.OnClickListener() { 12 @Override 13 public void onClick(DialogInterface dialog, int which) { 14 Toast.makeText(getApplicationContext(), "你选择了" + lesson[which], Toast.LENGTH_SHORT).show(); 15 } 16 }).create(); 17 //设置正面按钮 18 builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { 19 @Override 20 public void onClick(DialogInterface dialog, int which) { 21 dialog.dismiss(); 22 } 23 }); 24 //设置反面按钮 25 builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { 26 @Override 27 public void onClick(DialogInterface dialog, int which) { 28 dialog.dismiss(); 29 } 30 }); 31 AlertDialog dialog = builder.create(); //创建AlertDialog对象 32 dialog.show(); //显示对话框 33 }
3.单选对话框
单选对话框的内容就是一个单项选择列表,
需要用到setSingleChoiceItems
方法,参数一是列表数据,
参数二是默认选中的item,参数三则是点击监听接口,
我们要实现这样一个小功能,用户在选好某一项之后记下其选择,
下次点开对话框时就默认选中该项。
1 /**
2 * 单选对话框
3 */
4 public void singleChoiceDialog() {
5 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
6
7 builder.setTitle("你现在居住地是:");
8 final String[] cities = {"北京", "上海", "广州", "深圳", "杭州", "天津", "成都"};
9
10 builder.setSingleChoiceItems(cities, chedkedItem, new DialogInterface.OnClickListener() {
11 @Override
12 public void onClick(DialogInterface dialog, int which) {
13 Toast.makeText(getApplicationContext(), "你选择了" + cities[which], Toast.LENGTH_SHORT).show();
14 chedkedItem = which;
15 }
16 });
17 builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
18 @Override
19 public void onClick(DialogInterface dialog, int which) {
20 dialog.dismiss();
21 }
22 });
23
24 builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
25 @Override
26 public void onClick(DialogInterface dialog, int which) {
27 dialog.dismiss();
28 }
29 });
30
31 AlertDialog dialog = builder.create(); //创建AlertDialog对象
32 dialog.show(); //显示对话框
33 }
4.复选对话框
复选对话框是一个可以重复选中的列表,与单选对话框有点像,
不过调用的是setMultiChoiceItems方法,而且多了一个布尔值参数isChecked,
表示当前点击的item是否被选中。
我们创建一个集合,将点击选中的item添加到集合中,
取消勾选的话就从集合中移除,点击确认按钮后就将选中内容显示出来。
1 /** 2 * 复选对话框 3 */ 4 public void multiChoiceDialog() { 5 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 6 builder.setTitle("请选择你喜欢的颜色:"); 7 final String[] colors = {"红色", "橙色", "黄色", "绿色", "蓝色", "靛色", "紫色"}; 8 final List<String> myColors = new ArrayList<>(); 9 10 builder.setMultiChoiceItems(colors, null, new DialogInterface.OnMultiChoiceClickListener() { 11 @Override 12 public void onClick(DialogInterface dialog, int which, boolean isChecked) { 13 if (isChecked) { 14 myColors.add(colors[which]); 15 } else { 16 myColors.remove(colors[which]); 17 } 18 } 19 }); 20 21 builder.setPositiveButton("确认", new DialogInterface.OnClickListener() { 22 @Override 23 public void onClick(DialogInterface dialog, int which) { 24 String result = ""; 25 for (String color : myColors) { 26 result += color + "、"; 27 } 28 Toast.makeText(getApplicationContext(), "你选择了: " + result, Toast.LENGTH_SHORT).show(); 29 dialog.dismiss(); 30 } 31 }); 32 33 builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { 34 @Override 35 public void onClick(DialogInterface dialog, int which) { 36 myColors.clear(); 37 dialog.dismiss(); 38 } 39 }); 40 AlertDialog dialog = builder.create(); //创建AlertDialog对象 41 dialog.show(); //显示对话框 42 }