为了创建AlertDialog,需要使用Builder类,创建AlertDialog.Builder类的对象实例,再通过show()方法显示对话框。
在编程的过程中发现SetMessage()方法和setSingleChoiceItems()等方法是互斥的,这个需要注意。
废话不多说,下面列出了8种AlertDialog对话框:
1 主界面布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<Button
android:id="@+id/btn_1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="不带按钮的Dialog"
/>
<Button
android:id="@+id/btn_2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="带两个按钮的Dialog"
/>
<Button
android:id="@+id/btn_3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="带三个按钮的Dialog"
/>
<Button
android:id="@+id/btn_4"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="带简单列表的Dialog"
/>
<Button
android:id="@+id/btn_5"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="带单选列表的Dialog"
/>
<Button
android:id="@+id/btn_6"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="带多选列表的Dialog"
/>
<Button
android:id="@+id/btn_7"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="带输入框的Dialog"
/>
<Button
android:id="@+id/btn_8"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="带自定义布局的Dialog"
/>
</LinearLayout>
手机截图如下:

2 主程序内容
package com.example.androiddialog;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements
android.view.View.OnClickListener {
private String[] team = { "一番队", "二番队", "三番队", "四番队", "五番队", "六番队", "七番队",
"八番队", "九番队", "十番队" };
private boolean[] choice = { true, false, true, false, false, false, true,
false, false, false, };
private Button btn_1, btn_2, btn_3, btn_4, btn_5, btn_6, btn_7, btn_8;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initResource();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.btn_1:
showDialog1();
break;
case R.id.btn_2:
showDialog2();
break;
case R.id.btn_3:
showDialog3();
break;
case R.id.btn_4:
showDialog4();
break;
case R.id.btn_5:
showDialog5();
break;
case R.id.btn_6:
showDialog6();
break;
case R.id.btn_7:
showDialog7();
break;
case R.id.btn_8:
showDialog8();
break;
default:
break;
}
}
/**
* 初始化控件资源
*/
public void initResource() {
btn_1 = (Button) findViewById(R.id.btn_1);
btn_2 = (Button) findViewById(R.id.btn_2);
btn_3 = (Button) findViewById(R.id.btn_3);
btn_4 = (Button) findViewById(R.id.btn_4);
btn_5 = (Button) findViewById(R.id.btn_5);
btn_6 = (Button) findViewById(R.id.btn_6);
btn_7 = (Button) findViewById(R.id.btn_7);
btn_8 = (Button) findViewById(R.id.btn_8);
btn_1.setOnClickListener(this);
btn_2.setOnClickListener(this);
btn_3.setOnClickListener(this);
btn_4.setOnClickListener(this);
btn_5.setOnClickListener(this);
btn_6.setOnClickListener(this);
btn_7.setOnClickListener(this);
btn_8.setOnClickListener(this);
}
/**
* 什么都没有,只有一句文字的Dialog
*/
public void showDialog1() {
new AlertDialog.Builder(this).setTitle("这是一个没有按钮的AlertDialog~")
.create().show();
}
/**
* 带两个按钮的Dialog
*/
public void showDialog2() {
new AlertDialog.Builder(this).setTitle("提示")
.setIcon(R.drawable.ic_launcher).setMessage("带两个按钮的Dialog~")
.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
}).setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
}).create().show();
}
/**
* 带三个按钮的Dialog
*/
public void showDialog3() {
new AlertDialog.Builder(this).setTitle("提示")
.setIcon(R.drawable.ic_launcher).setMessage("带三个按钮的Dialog~")
.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
}).setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
}).setNeutralButton("忽略", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
}).create().show();
}
/**
* 带简单列表的Dialog
*/
public void showDialog4() {
new AlertDialog.Builder(this).setTitle("带简单列表的Dialog~")
.setIcon(R.drawable.ic_launcher).setItems(team, null)
.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
}).setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
}).create().show();
}
private ListView singleList = null;
/**
* 带单选列表的Dialog
*/
public void showDialog5() {
AlertDialog alertDialog = new AlertDialog.Builder(this)
.setTitle("带单选列表的Dialog~").setIcon(R.drawable.ic_launcher)
.setSingleChoiceItems(team, 1, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
}).setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(
MainActivity.this,
"您选择了第"
+ (singleList.getCheckedItemPosition() + 1)
+ "项:" + singleList.getAdapter()
.getItem(singleList.getCheckedItemPosition()),
Toast.LENGTH_SHORT).show();
}
}).setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
}).create();
singleList = alertDialog.getListView();
alertDialog.show();
}
private ListView muitList = null;
/**
* 带多选列表的Dialog
*/
public void showDialog6() {
AlertDialog alertDialog = new AlertDialog.Builder(this)
.setTitle("带多选列表的Dialog~")
.setIcon(R.drawable.ic_launcher)
.setMultiChoiceItems(team, choice,
new OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which, boolean isChecked) {
// TODO Auto-generated method stub
choice[which] = isChecked;
}
}).setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
String s = "您选择了:";
if (muitList.getCheckedItemPositions().size() > 0) {
for (int i = 0; i < muitList.getCount(); i++) {
if (muitList.getCheckedItemPositions().get(i)) {
s += muitList.getAdapter().getItem(i)
.toString()
+ " ";
}
}
} else {
s += "0项";
}
Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT)
.show();
}
}).setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
}).create();
muitList = alertDialog.getListView();
alertDialog.show();
}
/**
* 带输入框的Dialog
*/
public void showDialog7() {
final EditText edittext = new EditText(this);
new AlertDialog.Builder(this).setTitle("带输入框的Dialog~")
.setIcon(R.drawable.ic_launcher).setView(edittext)
.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this,
"输入框中字符串是:" + edittext.getText().toString(),
Toast.LENGTH_SHORT).show();
}
}).setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
}).create().show();
}
/**
* 带自定义布局的Dialog
*/
public void showDialog8() {
View layout = getLayoutInflater().inflate(R.layout.login,
(ViewGroup) findViewById(R.id.login));
final EditText editId = (EditText) layout
.findViewById(R.id.edit_login_id);
final EditText editPass = (EditText) layout
.findViewById(R.id.edit_login_pass);
new AlertDialog.Builder(this).setTitle("带自定义布局的Dialog~")
.setIcon(R.drawable.ic_launcher).setView(layout)
.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(
MainActivity.this,
"登录名是:" + editId.getText().toString()
+ "\n密码是:"
+ editPass.getText().toString(),
Toast.LENGTH_SHORT).show();
}
}).setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
}).create().show();
}
}
其中自定义布局AlertDialog中的login.xml文件如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/login"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="登录名称"
android:textColor="#000000"
android:textSize="15sp"
android:textStyle="bold"/>
<EditText
android:id="@+id/edit_login_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="请输入用户名或邮箱"
/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="登录密码"
android:textColor="#000000"
android:textSize="15sp"
android:textStyle="bold"/>
<EditText
android:id="@+id/edit_login_pass"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="请输入您的密码"
android:password="true"
/>
</LinearLayout>
</LinearLayout>
最后各个实例的截图如下:











