AlertDialog是一個浮動式的視窗,上面可以做很多事情,我目前只學了2個功能,第一個是條列式選單,另一個是多項勾選功能,實際樣式如下圖。
AlertDialog最常見的使用情境就是配合點擊事件並且跳出這個浮動視窗,所以XML的部分我只有新增按鈕來達到這個使用效果。
這些功能我會比較喜歡寫在副程式的部分,這樣我覺得程式碼會比較清晰。
Now you selected is : 台灣
: public void CountrySelectAlertDialog (){
AlertDialog.Builder builder = new AlertDialog.Builder (MainActivity.this);
builder.setTitle ("國家列表");
builder.setItems (Countrys, new DialogInterface.OnClickListener () {
@Override
public void onClick (DialogInterface dialogInterface, int i) {
Toast.makeText (MainActivity.this,"Now you selected Country is : "+Countrys[i],Toast.LENGTH_LONG).show ();
}
});
builder.create ().show ();
}
程式碼分析:
.create()
以及.show()
,沒有.show()
不管怎麼點擊還是不會顯示你所建立的內容。,前面粗體字要注意。按鈕點擊事件
select.setOnClickListener (new View.OnClickListener () {
@Override
public void onClick (View view) {
CountrySelectAlertDialog ();
}
});
public void MultiSelectAlertDialog(){
final boolean[] selected = new boolean[Foods.length];
AlertDialog.Builder builder1 = new AlertDialog.Builder (this);
builder1.setTitle ("食物");
builder1.setMultiChoiceItems (Foods, selected, new DialogInterface.OnMultiChoiceClickListener () {
@Override
public void onClick (DialogInterface dialogInterface, int i, boolean b) {
Log.e ("TAG", "onClick: "+Foods[i]+b);
}
}).setPositiveButton ("Positive", new DialogInterface.OnClickListener () {
@Override
public void onClick (DialogInterface dialogInterface, int i) {
Log.e ("TAG", "已送出");
}
}).setNegativeButton ("Negative", new DialogInterface.OnClickListener () {
@Override
public void onClick (DialogInterface dialogInterface, int i) {
Log.e ("TAG", "已取消選取");
}
}).setNeutralButton ("Neutral", new DialogInterface.OnClickListener () {
@Override
public void onClick (DialogInterface dialogInterface, int i) {
}
}).setIcon (R.drawable.foods);
builder1.create ().show ();
}
程式碼分析:
.setMultiCloiceItems
:這個建立時需要輸入的內容有(CharSequence[] items, boolean[] checkedItems, final OnMultiChoiceClickListener listener)
這些東西,也就是要輸入物件、然後判斷有沒有勾選狀態的布林函數,最後就是聆聽點擊事件。.setPositiveButton
.setNegativeButton
.setNeutralButton
.setIcon
:設定圖標在AlertDialog的標題旁邊作為襯托標題文字。三種Button的位置對應圖
多項勾選點擊事件
MultiSelect.setOnClickListener (new View.OnClickListener () {
@Override
public void onClick (View view) {
MultiSelectAlertDialog ();
}
});
.show()
一定要放,不然怎麼點擊按鈕都無法跳出AlertDialog的內容。