当前位置: 移动技术网 > 移动技术>移动开发>Android > 一起学Android之Dialog

一起学Android之Dialog

2019年03月24日  | 移动技术网移动技术  | 我要评论

概述

对话框(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 设置自定义视图的对话框

默认对话框

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

关键代码如下:

 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                     }
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     }

复选框对话框

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

关键代码如下:

 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     }

自定义对话框


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

关键代码如下:

 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     }

备注


记录学习,记录进步!

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网