標籤:
對話方塊就是一個AlertDialog,但是一個簡單的AlertDialog,我們卻可以將它玩出許多花樣來,下面我們就來一起總結一下AlertDialog的用法。看看各位童鞋在平時的工作中否都用到了AlertDialog的這些特性。
OK,廢話不多說,進入我們今天的正題。
普通對話方塊
普通對話方塊就是我們最最常用的對話方塊,實現起來並不複雜,實現出來的效果當然也是最簡單的,如下:
AlertDialog dialog = new AlertDialog.Builder(this).setTitle("普通對話方塊").setIcon(R.drawable.a4s).setNegativeButton("取消", null).setPositiveButton("確定", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//處理確認按鈕的點擊事件}}).setNeutralButton("中立", null).setMessage("確認刪除?").create();dialog.show();
我們可以給一個對話方塊設定標題,也可以設定表徵圖,在對話方塊的最下面我們可以設定三個按鈕,分別是取消、確定、中立,一般情況下,我們可以在確認按鈕中加入相應的點擊事件。OK,那麼這樣一個對話方塊它的顯示效果是什麼樣子的呢?如下:
顯示Item的對話方塊
如果我們的對話方塊中要顯示若干個item,那麼我們可以給AlertDialog設定item,如下:
AlertDialog dialog = new AlertDialog.Builder(this).setTitle("顯示Item對話方塊").setIcon(R.drawable.a4s).setItems(items, new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, items[which], Toast.LENGTH_SHORT).show();}}).create();dialog.show();
這裡的items是一個String類型的數組,如下:
items = new String[] { "魏", "蜀", "吳" };
那麼這裡我們就沒有必要再設定最下方的三個按鈕了,直接點擊Item之後,觸發相應的事件。在onClick方法中有一個int型參數叫做which,這個參數表示的是使用者點擊了第幾個item,顯示效果如下:
當使用者點擊不同的item之後,我們在onClick方法中根據which的值的不同做出相應的處理。
單選對話方塊
和顯示Item的對話方塊一樣,單選對話方塊我們其實也沒有必要再設定最下面的三個按鈕(如果你非要設定也沒問題),那麼他的代碼是這樣的:
AlertDialog dialog = new AlertDialog.Builder(this).setTitle("單選對話方塊").setIcon(R.drawable.a4s).setSingleChoiceItems(items, -1, new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, items[which], Toast.LENGTH_SHORT).show();dialog.dismiss();}}).create();dialog.show();
這次我們調用的方法是setSingleChoiceItems這個方法,這個方法有三個參數,其中items的值和前面的一樣,第二個參數表示預選中的item,第三個參數則是事件的處理方法。事件處理方法也一樣,不同的是這裡多了一句dialog.dismiss();,沒錯,這裡我們要手動關閉dialog。那麼它的顯示效果是這樣的:
當我們選中任意一個item的時候,dialog將會自動關閉,相應的點擊事件我們在onClick方法中進行處理。
多選對話方塊
和單選對話方塊不同,多選對話方塊就要求我們必須有下面的按鈕,那麼在這裡我給下面設定兩個按鈕,我們來看看代碼:
AlertDialog dialog = new AlertDialog.Builder(this).setTitle("多選對話方塊").setIcon(R.drawable.a4s).setNegativeButton("取消", null).setPositiveButton("確定", null).setMultiChoiceItems(items, null, new OnMultiChoiceClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which, boolean isChecked) {}}).create();dialog.show();
和setSingleChoiceItems一樣,這裡的setMultiChoiceItems也有三個參數,分別是資料來源,預選中的item以及item的點擊事件,預選中的item是一個Boolean型的數組,表示一開始哪些item被選中哪些item沒有被選中,這裡的點擊事件也多了一個參數,就是isChecked,表示該item是否被選中,那麼我們可以通過一個boolean類型的數組來記錄item的選中情況。這裡我就不再單獨寫了。多選對話方塊的顯示效果如所示:
當我們選完我們要選的每一項之後,點擊確定就可以拿到相應的資料了。
自訂Adapter
可能有同學注意到了,Builder還有一個方法叫做setAdapter,這個方法的參數是一個ListAdapter,就是我們平時為ListView製作的Adapter,可以設定Adapter意味著我們的AlertDialog可以顯示出來的內容更加的豐富,那麼在這裡我就使用最簡單的ArrayAdapter來為大家做一個Demo,代碼如下:
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new String[] { "張三", "李四" });AlertDialog dialog = new AlertDialog.Builder(this).setTitle("自訂Adapter").setIcon(R.drawable.a4s).setAdapter(adapter, new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}}).create();dialog.show();
顯示效果如下:
這個時候我們想讓AlertDialog顯示成什麼樣子就能讓它顯示成什麼樣子,Adapter給我們帶來了極大的靈活性。
自訂View
當然,這裡終極大Boss還不是自訂Adapter,而是自訂View,通過自訂View,我們可以讓我們的AlertDialog顯示出任何我們想要的介面,代碼如下:
View view = LayoutInflater.from(this).inflate(R.layout.activity_main, null);AlertDialog dialog = new AlertDialog.Builder(this).setTitle("自訂View").setIcon(R.drawable.a4s).setView(view).create();dialog.show();
顯示效果如下:
使用自訂View的方式,我們可以自訂出各種各樣的Dialog出來,比如登入的Dialog,關於或者說明的Dialog等等。
AlertDialog的使用方式基本上就這麼幾種,Demo下載http://download.csdn.net/detail/u012702547/9433640
Android中的普通對話方塊、單選對話方塊、多選對話方塊、帶Icon的對話方塊、以及自訂Adapter和自訂View對話方塊詳解