安卓AlertDialog对话面板的使用---Android开发

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 }
原文地址:https://www.cnblogs.com/rainbow-1/p/14496551.html