Android中一共有两种常用对话框:

  • AlertDialog:功能最强大的对话框
  • ProgressDialog:进度条对话框,一般在执行异步任务时使用,是AlertDialog的子类

Android内置的对话框有四种样式:
    1. 带消息、带N个按钮的提示对话框
    2. 带列表、带N个按钮的提示对话框
    3. 带多个单选列表项、带N个按钮的提示对话框
    4. 带多个多选列表项、带N个按钮的提示对话框

AlertDialog创建对话框的一般步骤为:

  1. 创建一个AlertDialog.Builder对象,AlertDialog是采用建造者模式设计的,为此我们需要先创建一个AlertDialog的建造者
  2. 调用AlertDialog.Builder对象的方法为其设置图标、标题、内容和按钮等
  3. 调用AlertDialog.Builder对象的的create方法创建一个AlertDialog对象
  4. 调用AlertDialog对象的show方法显示对话框
  5. 在适当的条件下调用AlertDialog对象的dismiss方法取消对话框

为对话框设置标题和图标:

1. builder.setIcon(icon);
2. builder.setTitle(title);

创建带消息、带两个个按钮的提示对话框:

1. builder.setMessage(message);
2. builder.setPositiveButton(text, listener);
3. builder.setNegativeButton(text, listener);
buidler还可以使用下面的方法创建一个装饰性按钮:4. builder.setNeutralButton(text, listener):创建普通列表对话框

带列表、带N个按钮的提示对话框:

builder.setItems(items, listener):创建普通列表对话框
  builder.setSingleChoiceItems(items, checkedItem, listener): 创建单选列表对话框
  builder.setMultiChoiceItems(items, checkedItems, listener):创建多选列表对话框

使用自定义的对话框:

一般系统默认的对话框的样式和我们的app的设计风格相差很远,使用原生对话框会让我们的应用看起来很丑,所以大多数时候我们需要自定义我们的对话款的界面,我看见多很多的方法,包括去修改AlertDialog的源码等方法,我一般会使用一个比较简单的方法,其步骤如下:

  1. 自定义一个对话框的界面,包括对话框的标题等
  2. 创建一个AlertDialog对象并直接调用show方法将其显示出,注意不要做其它的设置
  3. 调用getWindow()方法得到对话框的窗口对象window,再调用window的setContentView方法为窗口设置我们的自定义对象

其完整代码为:

AlertDialog dialog = new  AlertDialog.Builder(context).create();
//不要做过多设置,直接调用show方法
dialog.show();
Window window = dialog.getWindow();
//自定义一个方法得到对话框的自定义布局
View dialogView = getDlgView();
//为窗口对象设置布局
window.setContentView(dialogView);
//此外还可以设置window的标志,如window无标题                
window.addFlags(Window.FEATURE_NO_TITLE);