android對話方塊介紹

來源:互聯網
上載者:User

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                                 @Override12                                 public void onClick(DialogInterface dialog, int which) {13                                     //do something14                                 }15                             })16                             .setNeutralButton("忽略",new DialogInterface.OnClickListener() {//中立的,什麼也不錯17                                 @Override18                                 public void onClick(DialogInterface dialog, int which) {19                                     //do something20                                 }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                                     @Override12                                     public void onClick(DialogInterface dialog, int which) {13                                         //do something14                                     }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                     @Override14                     public void onClick(DialogInterface dialog, int which) {15                         //do something16                     }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 something10                                 }11                             })12                     .setPositiveButton("確定",13                             new DialogInterface.OnClickListener() {14                                 public void onClick(DialogInterface dialog,15                                         int which) {16                                     // do something17                                 }18                             }).show();

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

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

轉載自http://www.cnblogs.com/zxl-jay/archive/2011/09/30/2196671.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.