欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

一起学Android之Dialog

程序员文章站 2022-08-31 12:26:02
对话框(Dialog)是一个在Android系统开发中经常会用到的小窗口,它提示用户做决定或者输入一些东西,对话框并不填充屏幕,是一个模态(Modal)窗口。Dialog类是所有对话框的基类,应避免直接实例化对话框,通常使用它的子类(AlertDialog,DatePickerDialog or T... ......

概述

对话框(dialog)是一个小窗口,在android系统开发中经常会用到,它提示用户做决定或者输入一些东西,对话框并不填充屏幕,是一个模态(modal)窗口。dialog类是所有对话框的基类,应避免直接实例化对话框,通常使用它的子类(alertdialog,datepickerdialog or timepickerdialog),本文主要讲解的是alertdialog。

什么是alertdialog?

可以显示标题、最多三个按钮、可供选择的项目列表或自定义布局的对话框。

创建步骤

  1. 构建一个builder(alertdialog.builder)。
  2. 设置对话框标题(settitle),内容信息(setmessage)。
  3. 设置对话框显示的按钮,最多三个按钮(setpositivebutton,setnegativebutton)。
  4. 调用方法,创建对话框对象(create)。
  5. 显示对话框(show)。

涉及知识点

  • alertdialog.builder 对话框构造器,可以进行对话框进行设置,并创建对话框对象。
  • settitle 设置对话框标题,setmessage设置对话框显示的文本内容
  • setnegativebutton 设置对话框显示的否定按钮(cancel), setpositivebutton设置对话框显示的肯定按钮(ok)
  • show() 显示对话框
  • setitems 设置对话框的列表内容
  • setsinglechoiceitems 设置单选按钮的列表项,setmultichoiceitems设置多选按钮的列表项
  • setview 设置自定义视图的对话框

默认对话框

如下图所示(显示了标题,内容,两个按钮):

一起学Android之Dialog

关键代码如下:

 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     }

列表对话框

如下图所示(弹出的对话框内容展示为一个列表)用户通过列表进行选择

一起学Android之Dialog

关键代码如下:

 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     }

单选按钮对话框

如下图所示(用户通过单选按钮进行选择):

一起学Android之Dialog

关键代码如下:

 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                     }
24                 }
25                 toast.maketext(mainactivity.this, "你选择了[" + arr_colors[which] + "]", toast.length_short).show();
26             }
27         });
28         //积极按钮?
29         builder.setpositivebutton("ok", new dialoginterface.onclicklistener() {
30             @override
31             public void onclick(dialoginterface dialog, int which) {
32                 toast.maketext(mainactivity.this, "你选择了ok"+getcheckeditems(), toast.length_short).show();
33             }
34         });
35         //消极按钮
36         builder.setnegativebutton("cancel", new dialoginterface.onclicklistener() {
37             @override
38             public void onclick(dialoginterface dialog, int which) {
39                 toast.maketext(mainactivity.this, "你选择了cancel"+getcheckeditems(), toast.length_short).show();
40             }
41         });
42         //创建一个对话框
43         alertdialog dialog = builder.create();
44         //显示一个对话框
45         dialog.show();
46     }

复选框对话框

如下图所示(对话框的内容可以进行多选):

一起学Android之Dialog

关键代码如下:

 1   /**
 2      * 复选框对话框事件
 3      *
 4      * @param v
 5      */
 6     public void showmultipledialog(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         //设置列表内容和点击事件
15         builder.setmultichoiceitems(r.array.arr_colors, null, new dialoginterface.onmultichoiceclicklistener() {
16             @override
17             public void onclick(dialoginterface dialog, int which, boolean ischecked) {
18                 string msg="";
19                 if(ischecked){
20                     checkeditems[which]=1;
21                     msg="选择";
22                 }else{
23                     checkeditems[which]=0;
24                     msg="取消";
25                 }
26                 toast.maketext(mainactivity.this, "你"+msg+"了[" + arr_colors[which] + "]", toast.length_short).show();
27             }
28         });
29         //积极按钮?
30         builder.setpositivebutton("ok", new dialoginterface.onclicklistener() {
31             @override
32             public void onclick(dialoginterface dialog, int which) {
33                 toast.maketext(mainactivity.this, "你选择了ok:"+getcheckeditems(), toast.length_short).show();
34             }
35         });
36         //消极按钮
37         builder.setnegativebutton("cancel", new dialoginterface.onclicklistener() {
38             @override
39             public void onclick(dialoginterface dialog, int which) {
40                 toast.maketext(mainactivity.this, "你选择了cancel:"+getcheckeditems(), toast.length_short).show();
41             }
42         });
43         //创建一个对话框
44         alertdialog dialog = builder.create();
45         //显示一个对话框
46         dialog.show();
47     }

自定义对话框


如下图所示(用户可以在弹出的对话框中输入内容等信息)

一起学Android之Dialog

关键代码如下:

 1  /**
 2      * 自定义对话框事件按钮
 3      * @param v
 4      */
 5     public void showcustomerdialog(view v) {
 6 
 7         alertdialog.builder builder = new alertdialog.builder(this);
 8         // get the layout inflater
 9         layoutinflater inflater = getlayoutinflater();
10         view customerview=inflater.inflate(r.layout.dialog_layout, null);
11         // inflate and set the layout for the dialog
12         // pass null as the parent view because its going in the dialog layout
13         musername= (edittext) customerview.findviewbyid(r.id.username);
14         mpassword= (edittext) customerview.findviewbyid(r.id.password);
15         builder.setview(customerview)
16                 // add action buttons
17                 .setpositivebutton(r.string.sign_in, new dialoginterface.onclicklistener() {
18                     @override
19                     public void onclick(dialoginterface dialog, int id) {
20                         // sign in the user ...
21                         toast.maketext(mainactivity.this, "你输入的用户名为:"+musername.gettext()+"密码为:"+mpassword.gettext(), toast.length_short).show();
22                     }
23                 })
24                 .setnegativebutton(r.string.cancel2, new dialoginterface.onclicklistener() {
25                     public void onclick(dialoginterface dialog, int id) {
26                         toast.maketext(mainactivity.this, "你取消了输入的用户名密码", toast.length_short).show();
27 
28                     }
29                 });
30         //创建一个对话框
31         alertdialog dialog = builder.create();
32         //显示一个对话框
33         dialog.show();
34     }

备注


记录学习,记录进步!