Android中AlertDialog的六種建立方式
阿新 • • 發佈:2018-12-31
建立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();
執行截圖: