android提供了四類常用的對話框,本文分享具體實現方法:
- 1.alertdialog,功能最豐富,實際運用最廣泛
- 2.progressdialog,進度條對話框
- 3.datepickerdialog,日期選擇對話框
- 4.timepickerdialog,時間選擇對話框
這里主要介紹第一種,剩下的三種都是第一種的子類,所以其方法,都可以直接使用.
創建一個對話框一般需要下面幾個步驟
- 1.創建alertdialog.builder對象
- 2.對alertdialog.builder通過settitle來設置標題,seticon來設置圖標
- 3.調用alertdialog.builder相關方法來設置內容
- 4.調用setpositivebutton或者setbegativebutton設置確定和取消按鈕,其中還一個裝飾性按鈕,就不介紹了
- 5.調用alertdialog.builder的create方法進行創建,再調用alertdialog的show方法即可顯示出來.
下面根據實例一起來看看具體用法
1、簡單文本對話框
定義一個button為其添加點擊事件,從而啟動alertdialog對話框,并添加監聽事件
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 ) //設置對話框標題 .settitle( "簡單文本對話框" ) //設置圖標 .seticon(r.mipmap.ic_launcher) //設置為簡單文本對話框 .setmessage( "這是一個簡單文本對話框" ); //設置兩個按鈕 builder.setpositivebutton( "確定" , new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { toast.maketext(mainactivity. this , "你點擊了確認" ,toast.length_short).show(); } }); builder.setnegativebutton( "取消" , new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { toast.maketext(mainactivity. this , "你點擊了取消" , toast.length_short).show(); } }); builder.create().show(); } |
2、列表項對話框
和上面的文本對話框不同,列表像是通過一個數組來顯示列表
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){ //列表項需要傳入一個數組用于顯示列表 final string items[] = { "java" , "php" , "android" , "ios" }; alertdialog.builder builder = new alertdialog.builder( this ) //設置對話框標題 .settitle( "簡單列表項對話框" ) //設置圖標 .seticon(r.mipmap.ic_launcher) //設置為簡單列表項對話框 .setitems(items, new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { toast.maketext(mainactivity. this , "你點擊了" + items[which], toast.length_short).show(); } }); //設置兩個按鈕 builder.setpositivebutton( "確定" , new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { toast.maketext(mainactivity. this , "你點擊了確認" ,toast.length_short).show(); } }); builder.setnegativebutton( "取消" , new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { toast.maketext(mainactivity. this , "你點擊了取消" , toast.length_short).show(); } }); builder.create().show(); } |
3、單選項對話框
和列表項差不多,但是功能足足強了好多,因為傳入的參數可以為數組,也可以是cursor的查詢結果集,還可以使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){ //列表項需要傳入一個數組用于顯示列表 final string items[] = { "java" , "php" , "android" , "ios" }; alertdialog.builder builder = new alertdialog.builder( this ) //設置對話框標題 .settitle( "簡單列表項對話框" ) //設置圖標 .seticon(r.mipmap.ic_launcher) //設置為簡單單選列表項對話框,1表示默認選擇第二個 .setsinglechoiceitems(items, 1 , new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { toast.maketext(mainactivity. this , "你點擊了" + items[which], toast.length_short).show(); } }); //設置兩個按鈕 builder.setpositivebutton( "確定" , new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { toast.maketext(mainactivity. this , "你點擊了確認" ,toast.length_short).show(); } }); builder.setnegativebutton( "取消" , new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { toast.maketext(mainactivity. this , "你點擊了取消" , toast.length_short).show(); } }); builder.create().show(); } |
4、多選項對話框
多選和單選差不多,就多了個boolean的數組來控制初始選擇值
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){ //列表項需要傳入一個數組用于顯示列表 final string items[] = { "java" , "php" , "android" , "ios" }; alertdialog.builder builder = new alertdialog.builder( this ) //設置對話框標題 .settitle( "簡單列表項對話框" ) //設置圖標 .seticon(r.mipmap.ic_launcher) //設置為簡單多選列表項對話框,boolean型變量表示初始選擇的位置 .setmultichoiceitems(items, new boolean []{ false , false , false , true }, null ); //設置兩個按鈕 builder.setpositivebutton( "確定" , new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { toast.maketext(mainactivity. this , "你點擊了確認" ,toast.length_short).show(); } }); builder.setnegativebutton( "取消" , new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { toast.maketext(mainactivity. this , "你點擊了取消" , toast.length_short).show(); } }); builder.create().show(); } |
另外還可以使用setadapter方法制作自定義列表項的對話框,或者使用setview來制作自定義view的對話框。
以后的實例中會逐漸都應用到的,希望大家繼續關注。