android提供了四類常用的對(duì)話框,本文分享具體實(shí)現(xiàn)方法:
- 1.alertdialog,功能最豐富,實(shí)際運(yùn)用最廣泛
- 2.progressdialog,進(jìn)度條對(duì)話框
- 3.datepickerdialog,日期選擇對(duì)話框
- 4.timepickerdialog,時(shí)間選擇對(duì)話框
這里主要介紹第一種,剩下的三種都是第一種的子類,所以其方法,都可以直接使用.
創(chuàng)建一個(gè)對(duì)話框一般需要下面幾個(gè)步驟
- 1.創(chuàng)建alertdialog.builder對(duì)象
- 2.對(duì)alertdialog.builder通過settitle來設(shè)置標(biāo)題,seticon來設(shè)置圖標(biāo)
- 3.調(diào)用alertdialog.builder相關(guān)方法來設(shè)置內(nèi)容
- 4.調(diào)用setpositivebutton或者setbegativebutton設(shè)置確定和取消按鈕,其中還一個(gè)裝飾性按鈕,就不介紹了
- 5.調(diào)用alertdialog.builder的create方法進(jìn)行創(chuàng)建,再調(diào)用alertdialog的show方法即可顯示出來.
下面根據(jù)實(shí)例一起來看看具體用法
1、簡(jiǎn)單文本對(duì)話框
定義一個(gè)button為其添加點(diǎn)擊事件,從而啟動(dòng)alertdialog對(duì)話框,并添加監(jiān)聽事件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
public void simpledialog1(view view){ alertdialog.builder builder = new alertdialog.builder( this ) //設(shè)置對(duì)話框標(biāo)題 .settitle( "簡(jiǎn)單文本對(duì)話框" ) //設(shè)置圖標(biāo) .seticon(r.mipmap.ic_launcher) //設(shè)置為簡(jiǎn)單文本對(duì)話框 .setmessage( "這是一個(gè)簡(jiǎn)單文本對(duì)話框" ); //設(shè)置兩個(gè)按鈕 builder.setpositivebutton( "確定" , new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { toast.maketext(mainactivity. this , "你點(diǎn)擊了確認(rèn)" ,toast.length_short).show(); } }); builder.setnegativebutton( "取消" , new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { toast.maketext(mainactivity. this , "你點(diǎn)擊了取消" , toast.length_short).show(); } }); builder.create().show(); } |
2、列表項(xiàng)對(duì)話框
和上面的文本對(duì)話框不同,列表像是通過一個(gè)數(shù)組來顯示列表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
public void simpledialog2(view view){ //列表項(xiàng)需要傳入一個(gè)數(shù)組用于顯示列表 final string items[] = { "java" , "php" , "android" , "ios" }; alertdialog.builder builder = new alertdialog.builder( this ) //設(shè)置對(duì)話框標(biāo)題 .settitle( "簡(jiǎn)單列表項(xiàng)對(duì)話框" ) //設(shè)置圖標(biāo) .seticon(r.mipmap.ic_launcher) //設(shè)置為簡(jiǎn)單列表項(xiàng)對(duì)話框 .setitems(items, new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { toast.maketext(mainactivity. this , "你點(diǎn)擊了" + items[which], toast.length_short).show(); } }); //設(shè)置兩個(gè)按鈕 builder.setpositivebutton( "確定" , new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { toast.maketext(mainactivity. this , "你點(diǎn)擊了確認(rèn)" ,toast.length_short).show(); } }); builder.setnegativebutton( "取消" , new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { toast.maketext(mainactivity. this , "你點(diǎn)擊了取消" , toast.length_short).show(); } }); builder.create().show(); } |
3、單選項(xiàng)對(duì)話框
和列表項(xiàng)差不多,但是功能足足強(qiáng)了好多,因?yàn)閭魅氲膮?shù)可以為數(shù)組,也可以是cursor的查詢結(jié)果集,還可以使listadapter
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
public void simpledialog3(view view){ //列表項(xiàng)需要傳入一個(gè)數(shù)組用于顯示列表 final string items[] = { "java" , "php" , "android" , "ios" }; alertdialog.builder builder = new alertdialog.builder( this ) //設(shè)置對(duì)話框標(biāo)題 .settitle( "簡(jiǎn)單列表項(xiàng)對(duì)話框" ) //設(shè)置圖標(biāo) .seticon(r.mipmap.ic_launcher) //設(shè)置為簡(jiǎn)單單選列表項(xiàng)對(duì)話框,1表示默認(rèn)選擇第二個(gè) .setsinglechoiceitems(items, 1 , new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { toast.maketext(mainactivity. this , "你點(diǎn)擊了" + items[which], toast.length_short).show(); } }); //設(shè)置兩個(gè)按鈕 builder.setpositivebutton( "確定" , new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { toast.maketext(mainactivity. this , "你點(diǎn)擊了確認(rèn)" ,toast.length_short).show(); } }); builder.setnegativebutton( "取消" , new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { toast.maketext(mainactivity. this , "你點(diǎn)擊了取消" , toast.length_short).show(); } }); builder.create().show(); } |
4、多選項(xiàng)對(duì)話框
多選和單選差不多,就多了個(gè)boolean的數(shù)組來控制初始選擇值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
public void simpledialog4(view view){ //列表項(xiàng)需要傳入一個(gè)數(shù)組用于顯示列表 final string items[] = { "java" , "php" , "android" , "ios" }; alertdialog.builder builder = new alertdialog.builder( this ) //設(shè)置對(duì)話框標(biāo)題 .settitle( "簡(jiǎn)單列表項(xiàng)對(duì)話框" ) //設(shè)置圖標(biāo) .seticon(r.mipmap.ic_launcher) //設(shè)置為簡(jiǎn)單多選列表項(xiàng)對(duì)話框,boolean型變量表示初始選擇的位置 .setmultichoiceitems(items, new boolean []{ false , false , false , true }, null ); //設(shè)置兩個(gè)按鈕 builder.setpositivebutton( "確定" , new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { toast.maketext(mainactivity. this , "你點(diǎn)擊了確認(rèn)" ,toast.length_short).show(); } }); builder.setnegativebutton( "取消" , new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { toast.maketext(mainactivity. this , "你點(diǎn)擊了取消" , toast.length_short).show(); } }); builder.create().show(); } |
另外還可以使用setadapter方法制作自定義列表項(xiàng)的對(duì)話框,或者使用setview來制作自定義view的對(duì)話框。
以后的實(shí)例中會(huì)逐漸都應(yīng)用到的,希望大家繼續(xù)關(guān)注。