Android为我们提供了很多种AlertDialog,当前我们也可以定制自己需要的Dialog;下面就是Android为我们提供的AlertDialog
1、显示带取消、中立和确定按钮的对话框
2、显示带列表的对话框
3、显示带多选列表项的对话框
4、显示带单选列表项的对话框
5、显示带图标列表的对话框
6、简单消息框 只有一个确定按钮
7、带文件输入框对话框
8、自定义对话框
MainActivity.java的代码
package com.example.alertdialogdemo; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.DialogInterface.OnMultiChoiceClickListener; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.SimpleAdapter; import android.widget.Toast; /** * 各种警告提示框 * * @author Administrator * */ public class MainActivity extends Activity { private Button btn1 = null; private Button btn2 = null; private Button btn3 = null; private Button btn4 = null; private Button btn5 = null; private Button btn6 = null; private Button btn7 = null; private Button btn8 = null; private Button btn9 = null; private boolean[] checkedItems; // 记录列表项的状态 private String[] items; // 各列表要显示的内容 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn1 = (Button) findViewById(R.id.btn1); btn2 = (Button) findViewById(R.id.btn2); btn3 = (Button) findViewById(R.id.btn3); btn4 = (Button) findViewById(R.id.btn4); btn5 = (Button) findViewById(R.id.btn5); btn6 = (Button) findViewById(R.id.btn6); btn7 = (Button) findViewById(R.id.btn7); btn8 = (Button) findViewById(R.id.btn8); btn9 = (Button) findViewById(R.id.btn9); int[] imageid = new int[] { R.drawable.icon1, R.drawable.icon2, R.drawable.icon3, R.drawable.icon4 }; final String[] title = new String[] { "item1", "item2", "item3", "item4" }; // 定义一个List集合 List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>(); for (int i = 0; i < imageid.length; i++) { Map<String, Object> map = new HashMap<String, Object>(); map.put("image", imageid[i]); map.put("title", title[i]); listItems.add(map); } final SimpleAdapter adapter = new SimpleAdapter(this, listItems, R.layout.items, new String[] { "title", "image" }, new int[] { R.id.title, R.id.image }); /** * 显示带取消、中立和确定按钮的对话框 */ btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub AlertDialog alert = new AlertDialog.Builder(MainActivity.this) .create(); // 设置对话框的图标 alert.setIcon(R.drawable.ic_launcher); // 设置对话框的标题 alert.setTitle("提示框: "); // 设置要显示的内容 alert.setMessage("带取消、中立和确定按钮的对话框!"); // 添加“取消”按钮监听事件 alert.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "你点了取消按钮", Toast.LENGTH_LONG).show(); } }); // 添加“确定”按钮监听事件 alert.setButton(DialogInterface.BUTTON_POSITIVE, "确定", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "你点了确定按钮", Toast.LENGTH_LONG).show(); } }); // 添加“中立”按钮监听事件 alert.setButton(DialogInterface.BUTTON_NEUTRAL, "中立", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "你点了中立按钮", Toast.LENGTH_LONG).show(); } }); // 显示对话框 alert.show(); } }); /** * 显示带列表的对话框 */ btn2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub final String[] items = new String[] { "篮球", "溜冰", "跑步", "游泳", "羽毛球" }; Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setIcon(R.drawable.ic_launcher); builder.setTitle("请选择你喜欢的运动:"); // 添加列表项 builder.setItems(items, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "你选择了 " + items[which], Toast.LENGTH_LONG) .show(); } }); builder.create().show(); } }); /** * 显示带多选列表项的对话框 */ btn3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub // 记录列表的状态 checkedItems = new boolean[] { false, true, false, true, false }; // 列表要显示的内容 items = new String[] { "开心农场", "俄罗斯方块", "城市猎人", "斗地主", "麻将" }; Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setIcon(R.drawable.ic_launcher); builder.setTitle("您喜欢的游戏是:"); builder.setMultiChoiceItems(items, checkedItems, new OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { // TODO Auto-generated method stub checkedItems[which] = isChecked; } }); // 添加“确定”按钮的监听器 builder.setPositiveButton("确定", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub String result = ""; for (int index = 0; index < checkedItems.length; index++) { if (checkedItems[index]) { result += items[index] + "--"; } } // 不为空时提示用户的选择 if (!result.equals("")) { Toast.makeText(MainActivity.this, result, Toast.LENGTH_LONG).show(); } } }); builder.create().show(); } }); /** * 显示带单选列表项的对话框 */ btn4.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub final String[] items = new String[] { "北京", "广州", "深圳", "上海" }; Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setIcon(R.drawable.ic_launcher); builder.setTitle("请选择你所在的城市:"); builder.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_LONG) .show(); } }); builder.setPositiveButton("确定", null); // 创建并显示对话框 builder.create().show(); } }); /** * 显示带图标列表的对话框 */ btn5.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setIcon(R.drawable.ic_launcher); builder.setTitle("设置:"); // 添加列表适配器 builder.setAdapter(adapter, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "您选择了" + items[which], Toast.LENGTH_LONG) .show(); } }); builder.create().show(); } }); /** * 简单消息框 只有一个确定按钮 */ btn6.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub new AlertDialog.Builder(MainActivity.this).setTitle("标题") .setMessage("简单消息框") .setIcon(android.R.drawable.ic_dialog_info) .setPositiveButton("确定", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "您选择了确定按钮", Toast.LENGTH_LONG).show(); } }).show(); } }); /** * 带文件输入框对话框 */ btn7.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("请输入:"); builder.setIcon(android.R.drawable.alert_dark_frame); builder.setView(new EditText(MainActivity.this)); builder.setPositiveButton("确定", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "您选择了确定按钮", Toast.LENGTH_LONG).show(); } }); builder.setNegativeButton("取消", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "您选择了取消按钮", Toast.LENGTH_LONG).show(); } }); builder.create().show(); } }); /** * 自定义对话框 */ btn8.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub CustomDialog.Builder customBuilder = new CustomDialog.Builder( MainActivity.this); customBuilder .setTitle("Custom title") .setMessage("Custom body") .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { System.out.println("cancel-" + which); Toast.makeText(MainActivity.this, "您选择了取消按钮", Toast.LENGTH_LONG) .show(); dialog.cancel(); } }) .setPositiveButton("Confirm", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { System.out.println("Confirm-" + which); Toast.makeText(MainActivity.this, "您选择了确定按钮", Toast.LENGTH_LONG) .show(); dialog.dismiss(); } }); customBuilder.create().show(); } }); btn9.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub } }); } }
package com.example.alertdialogdemo; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.view.LayoutInflater; import android.view.View; import android.view.WindowManager.LayoutParams; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; /** * 定制提示框 * * @author Administrator * */ public class CustomDialog extends Dialog { public CustomDialog(Context context) { super(context); // TODO Auto-generated constructor stub } public CustomDialog(Context context, int theme) { super(context, theme); } public static class Builder { private Context context; private String title; private String message; private String positiveButtonText; private String negativeButtonText; private View contentView; private DialogInterface.OnClickListener positiveButtonClickListener, negativeButtonClickListener; public Builder(Context context) { this.context = context; } /** * 设置对话框的文本 * * @param title * @return */ public Builder setMessage(String message) { this.message = message; return this; } /** * 通过资源文件设置对话框的文本 * * @param title * @return */ public Builder setMessage(int message) { this.message = (String) context.getText(message); return this; } /** * 通过资源文件设置对话框的标题 * * @param title * @return */ public Builder setTitle(int title) { this.title = (String) context.getText(title); return this; } /** * 设置对话框的标题 * * @param title * @return */ public Builder setTitle(String title) { this.title = title; return this; } /** * Set a custom content view for the Dialog. If a message is set, the * contentView is not added to the Dialog... * * @param v * @return */ public Builder setContentView(View v) { this.contentView = v; return this; } /** * 设置确定按钮的标题和监听器 * * @param positiveButtonText * @param listener * @return */ public Builder setPositiveButton(int positiveButtonText, DialogInterface.OnClickListener listener) { this.positiveButtonText = (String) context .getText(positiveButtonText); this.positiveButtonClickListener = listener; return this; } /** * 设置确定按钮的标题和监听器 * * @param positiveButtonText * @param listener * @return */ public Builder setPositiveButton(String positiveButtonText, DialogInterface.OnClickListener listener) { this.positiveButtonText = positiveButtonText; this.positiveButtonClickListener = listener; return this; } /** * 设置取消按钮的标题和监听器 * * @param negativeButtonText * @param listener * @return */ public Builder setNegativeButton(int negativeButtonText, DialogInterface.OnClickListener listener) { this.negativeButtonText = (String) context .getText(negativeButtonText); this.negativeButtonClickListener = listener; return this; } /** * 设置取消按钮的标题和监听器 * * @param negativeButtonText * @param listener * @return */ public Builder setNegativeButton(String negativeButtonText, DialogInterface.OnClickListener listener) { this.negativeButtonText = negativeButtonText; this.negativeButtonClickListener = listener; return this; } /** * 创建定制的对话框 */ public CustomDialog create() { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); // 创建指定样式的对话框 final CustomDialog dialog = new CustomDialog(context, R.style.Dialog); // 获取对话框的布局 View layout = inflater.inflate(R.layout.dialog, null); // 为对话框添加布局和设置大小 dialog.addContentView(layout, new LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); // 设置对话框的标题 ((TextView) layout.findViewById(R.id.title)).setText(title); // 设置确定按钮 if (positiveButtonText != null) { // 如果有文本设置按钮的文本 ((Button) layout.findViewById(R.id.positiveButton)) .setText(positiveButtonText); if (positiveButtonClickListener != null) { // 设置按钮的监听器 ((Button) layout.findViewById(R.id.positiveButton)) .setOnClickListener(new View.OnClickListener() { public void onClick(View v) { positiveButtonClickListener.onClick(dialog, DialogInterface.BUTTON_POSITIVE); } }); } } else { // 如果没有文本就设置按钮不可见 layout.findViewById(R.id.positiveButton).setVisibility( View.GONE); } // 设置取消按钮 if (negativeButtonText != null) { ((Button) layout.findViewById(R.id.negativeButton)) .setText(negativeButtonText); if (negativeButtonClickListener != null) { //设置按钮监听器 ((Button) layout.findViewById(R.id.negativeButton)) .setOnClickListener(new View.OnClickListener() { public void onClick(View v) { negativeButtonClickListener.onClick(dialog, DialogInterface.BUTTON_NEGATIVE); } }); } } else { // 如果没有文本就设置按钮不可见 layout.findViewById(R.id.negativeButton).setVisibility( View.GONE); } // 显示文本内容 if (message != null) { ((TextView) layout.findViewById(R.id.message)).setText(message); } else if (contentView != null) { // if no message set // add the contentView to the dialog body ((LinearLayout) layout.findViewById(R.id.content)) .removeAllViews(); ((LinearLayout) layout.findViewById(R.id.content)).addView( contentView, new LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); } dialog.setContentView(layout); return dialog; } } }
需要添加自定义对话框的布局文件和对话框theme、styles
这里就不一一贴出来了,需要的可以到以下地址下载
点击打开链接