Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android的dialog

Android的dialog

編輯:Android開發實例

android中的對話框形式有四種,分別是一般對話框形式,列表對話框形式,單選按鈕對話框,多選按鈕對話框,下面我一一對他們進行詳解。

<一>一般對話框

一般對話框形式如下圖:

具體實現代碼如下:

 1 new AlertDialog.Builder(this)
2 .setTitle("刪除")//設置標題
3 .setMessage("確定要刪除指定的記錄?")//設置提示消息
4 .setPositiveButton("確定",new DialogInterface.OnClickListener() {//設置確定的按鍵
5 @Override
6 public void onClick(DialogInterface dialog, int which) {
7 //do something
8 }
9 })
10 .setNegativeButton("取消",new DialogInterface.OnClickListener() {//設置取消按鍵
11 @Override
12 public void onClick(DialogInterface dialog, int which) {
13 //do something
14 }
15 })
16 .setNeutralButton("忽略",new DialogInterface.OnClickListener() {//中立的,什麼也不錯
17 @Override
18 public void onClick(DialogInterface dialog, int which) {
19 //do something
20 }
21 })
22 .setCancelable(false)//設置按返回鍵是否響應返回,這是是不響應
23 .show();//顯示

設置每一個Button按鍵時,都會傳(CharSequence text, OnClickListener listener)參數,text是按鍵的文本,listener是一個DialogInterface.OnClickListener(),所以我們要創建這個對象並實現它的點擊事件。在點擊事件中有一個which參數不知道大家有沒有注意,這個which實際上代表的是一個唯一的int型數值。像上面的setPositiveButton中的which代表的是-1,setNegativeButton中的which代表的是-3,setNeutralButton中的which代表的是-2.

所以在這裡為了代碼的簡化,我們不再為每一個Button創建DialogInterface.OnClickListener()對象,而是只創建一個DialogInterface.OnClickListener()對象來分別實現它們的點擊事件。具體實現代碼如下:

 1 DialogInterface.OnClickListener dialog = new DialogInterface.OnClickListener() {
2 public void onClick(DialogInterface dialog, int which) {
3 if(which == DialogInterface.BUTTON_POSITIVE){//確定按鍵的點擊事件
4 Toast.makeText(MainActivity.this, "ok!", 1).show();
5 }
6 else if(which == DialogInterface.BUTTON_NEGATIVE){//取消按鍵的點擊事件
7 Toast.makeText(MainActivity.this, "cancel", 1).show();
8 }
9 else if(which == DialogInterface.BUTTON_NEUTRAL){//忽略按鍵的點擊事件
10 Toast.makeText(MainActivity.this, "不知道", 1).show();
11 }
12 }
13 };
1 //對話框
2 new AlertDialog.Builder(this)
3 .setTitle("刪除")//設置標題
4 .setMessage("確定要刪除指定的記錄?")//設置提示消息
5 .setPositiveButton("確定",dialog)
6 .setNegativeButton("取消",dialog)
7 .setNeutralButton("忽略",dialog)
8 .setCancelable(false)//設置按返回鍵是否響應返回,這是是不響應
9 .show();//顯示

<二>列表對話框

懂得了上面的一般對話框的實現,那麼下面的三種對話框就很容易實現了。列表對話框的實現效果如下圖:

具體實現代碼如下:

 1 final String[] names = {"姚明","科比","詹姆斯"};//列表中顯示的內容組成的數組
2 new AlertDialog.Builder(this)
3 .setTitle("列表對話框")//對話框標題
4 .setItems(names, new DialogInterface.OnClickListener() {//每一條的名稱
5 public void onClick(DialogInterface dialog, int which) {//響應點擊事件
6 Toast.makeText(MainActivity.this, names[which], 1).show();
7 }
8 })
9 .setPositiveButton("確定", new DialogInterface.OnClickListener() {//響應確定鍵的點擊事件
10
11 @Override
12 public void onClick(DialogInterface dialog, int which) {
13 //do something
14 }
15 })
16 .show();

在設置列表顯示時我們用到了setItems,在setItems中有(CharSequence[] items, OnClickListener listener)這樣的參數,其中第一個參數是列表顯示中的每一個條目的名稱的數組,第二個是點擊一個列表顯示條目時的響應事件,所以在這裡我們可以事先定義好一個數組來存放要顯示的列表名稱。這樣在用時就方便多了。在條件點擊影響事件時我們要實現onclick事件,這裡也有一個參數which,它在API中的解釋為which The button that was clicked (e.g. DialogInterface.BUTTON1) or the position of the item clicked.它和上面的which一樣,也是代表一個唯一的數值。它在這裡代表的是自己定義的那個存放列表名稱的數組的下標值,因此我們可以通過下標來訪問數組中的數值。當然我們也可以在列表對話框中增加button,這樣也是可以的,我們當然也可以為這個button做響應事件。這裡我就不多說了。

<三>單選按鈕對話框

單選按鈕對話框的運行效果如下:

具體實現代碼如下:

 1 final String[] lang = {"NBA","英超","西甲"} ;
2 new AlertDialog.Builder(this)
3 .setTitle("單選按鈕對話框")//標題
4 .setSingleChoiceItems(lang,0,new DialogInterface.OnClickListener() {//設置條目
5 public void onClick(DialogInterface dialog, int which) {//響應事件
6 // do something
7 //關閉對話框
8 dialog.dismiss();
9 }
10 })
11 .setPositiveButton("確定", new DialogInterface.OnClickListener() {
12
13 @Override
14 public void onClick(DialogInterface dialog, int which) {
15 //do something
16 }
17 })//添加button並響應點擊事件
18 .show();

在設置列表顯示時我們用到了setSingleChoiceItems,在setSingleChoiceItems中有(CharSequence[] items, int checkedItem, OnClickListener listener)
這樣的參數,其中第一個參數是列表顯示中的每一個條目的名稱的數組,第二個是默認讓哪一個條目被選擇上,如上面的代碼,我讓第一條被默認選上,所以我就在checkedItem這個參數這裡寫上第一條在數組中的下標值0,如果我默認都沒被選上,我就在這裡寫上-1,第三個是點擊一個列表顯示條目時的響應事件,所以在這裡我們可以事先定義好一個數組來存放要顯示的列表名稱。這樣在用時就方便多了。在條件點擊影響事件時我們要實現onclick事件,這裡也有一個參數which,它在API中的解釋為which The button that was clicked (e.g. DialogInterface.BUTTON1) or the position of the item clicked.它和上面的which一樣,也是代表一個唯一的數值。它在這裡代表的是自己定義的那個存放列表名稱的數組的下標值,因此我們可以通過下標來訪問數組中的數值。在點擊完我們可以設置讓這個對話框消失,這裡可以用dialog.dismiss();讓對話框消失。當然我們也可以在列表對話框中增加button,這樣也是可以的,我們當然也可以為這個button做響應事件。這裡我就不多說了。

<四>多選按鈕對話框

多選按鈕對話框的運行效果如下:

 1 final String[] langs = { "NBA", "西甲", "英超" };
2 final boolean[] selected = new boolean[] { true, false, true };// 一個存放Boolean值的數組
3 new AlertDialog.Builder(this)
4 .setTitle("多選列表對話框")
5 // 標題
6 .setMultiChoiceItems(langs, selected,
7 new DialogInterface.OnMultiChoiceClickListener() {// 設置多選條目
8 public void onClick(DialogInterface dialog,int which, boolean isChecked) {
9 // do something
10 }
11 })
12 .setPositiveButton("確定",
13 new DialogInterface.OnClickListener() {
14 public void onClick(DialogInterface dialog,
15 int which) {
16 // do something
17 }
18 }).show();

在多選按鈕對話框中,我們用setMultiChoiceItems來設置多選按鈕,這裡setMultiChoiceItems中的參數為(CharSequence[] items, boolean[] checkedItems, OnMultiChoiceClickListener listener),第一個參數為要顯示的條目的名稱的數組,這裡我們用一個String型的數組來存放,第二個是一個默認哪些按鈕被選中的Boolean型數組,這裡,我讓下標為0和為2的條目默認被選中,當然,我們也可以事先定義好一個Boolean型數組。第三個參數就是點擊多選按鈕條目時的響應事件。在這個onClick事件中,同樣有三個參數(DialogInterface dialog, int which, boolean isChecked),第一個參數代表的是這個對話框,第二個參數代表的是String數組中存放的數值的下標值。第三個參數代表的是Boolean數組中的boolean值。當然我們也可以在列表對話框中增加button,這樣也是可以的,我們當然也可以為這個button做響應事件。這裡我就不多說了。

以上就是Android中的四種對話框形式,在用的時候我們要學會靈活運用,不要局限於一種特定的形式,我們可以設計自己的對話框。不要被思想所束縛。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved