1. 程式人生 > >Android中AlertDialog的六種建立方式

Android中AlertDialog的六種建立方式

建立AlertDialog的步驟:

  1、建立AlertDialog.Builder物件

  2、呼叫Builder物件的setTitle方法設定標題,setIcon方法設定圖示

  3、呼叫Builder相關方法如setMessage方法、setItems方法、setSingleChoiceItems方法、setMultiChoiceItems方法、setAdapter方法、setView方法設定不同型別的對話方塊內容。

  4、呼叫setPositiveButton、setNegativeButton、setNeutralButton設定多個按鈕

  5、呼叫Builder物件的create()方法建立AlertDialog物件

  6、呼叫AlertDialog物件的show()方法將對話方塊顯示出來

一、setMessage:設定對話方塊內容為簡單文字內容

AlertDialog.Builder builder = new AlertDialog.Builder(this);
// 設定引數
builder.setTitle("請做出選擇").setIcon(R.drawable.ic_launcher)
.setMessage("鳳姐美不美")
.setPositiveButton("美", new OnClickListener() {// 積極
@Override
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "恭喜你打錯了", 0)
.show();
}
}).setNegativeButton("不美", new OnClickListener() {// 消極
@Override
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "恭喜你答對了", 0)
.show();
}
}).setNeutralButton("不知道", new OnClickListener() {// 中間級
@Override
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "你瞎啊", 0)
.show();
}
});
builder.create().show();

執行截圖:


二、setItem:設定文字框內容為簡單列表項

  // 建立資料
final String[] items = new String[] { "北京", "上海", "廣州", "深圳" };
// 建立對話方塊構建器
AlertDialog.Builder builder = new AlertDialog.Builder(this);
// 設定引數
builder.setIcon(R.drawable.ic_launcher).setTitle("提示")
.setItems(items, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, items[which],
Toast.LENGTH_SHORT).show();
}
});
builder.create().show();

執行截圖:


三、setSingleChoiceItems()設定對話方塊內容為單選列表項

// 建立資料
final String[] items = new String[] { "北京", "上海", "廣州", "深圳" };
// 建立對話方塊構建器
AlertDialog.Builder builder = new AlertDialog.Builder(this);
// 設定引數
builder.setIcon(R.drawable.ic_launcher).setTitle("提示")
.setSingleChoiceItems(items, 0, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, items[which],
Toast.LENGTH_SHORT).show();
}
});
builder.create().show();

執行截圖:


四、setMultiChoiceItems()設定對話方塊內容為多選項列表

// 建立資料
final String[] items = new String[] { "北京", "上海", "廣州", "深圳" };
// 建立對話方塊構建器
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(R.drawable.ic_launcher)
.setTitle("提示")
.setMultiChoiceItems(items,
new boolean[] { true, true, false, false, false },
new OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which, boolean isChecked) {
// TODO Auto-generated method stub
if (isChecked) {
Toast.makeText(MainActivity.this,
items[which], 0).show();
}
}
});
builder.create().show();

執行截圖:


五、setAdapter()設定對話方塊內容為自定義列表項(這裡是一個佈局)

 // 建立資料
final String[] items = new String[] { "北京", "上海", "廣州", "深圳" };
// 建立對話方塊構建器
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("提示")
.setIcon(R.drawable.ic_launcher)
.setAdapter(
new ArrayAdapter<String>(MainActivity.this,
R.layout.item, R.id.tv, items),
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, items[which],
0).show();
}
});
builder.create().show();

執行截圖:


六、setView()設定對話方塊為自定義View

// 建立對話方塊構建器
AlertDialog.Builder builder = new AlertDialog.Builder(this);
// 獲取佈局
View view2 = View.inflate(MainActivity.this, R.layout.login, null);
// 獲取佈局中的控制元件
final EditText username = (EditText) view2.findViewById(R.id.username);
final EditText password = (EditText) view2.findViewById(R.id.password);
final Button button = (Button) view2.findViewById(R.id.btn_login);
// 設定引數
builder.setTitle("Login").setIcon(R.drawable.ic_launcher)
.setView(view2);
// 建立對話方塊
final AlertDialog alertDialog = builder.create();
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String uname = username.getText().toString().trim();
String psd = password.getText().toString().trim();
if (uname.equals("zcl") && psd.equals("123456")) {
Toast.makeText(MainActivity.this, "登入成功", 0).show();
}
Toast.makeText(MainActivity.this, "登入失敗", 0).show();
alertDialog.dismiss();// 對話方塊消失
}
});
alertDialog.show();

執行截圖: