Android中一共有两种常用对话框:
- AlertDialog:功能最强大的对话框
- ProgressDialog:进度条对话框,一般在执行异步任务时使用,是AlertDialog的子类
Android内置的对话框有四种样式:
1. 带消息、带N个按钮的提示对话框
2. 带列表、带N个按钮的提示对话框
3. 带多个单选列表项、带N个按钮的提示对话框
4. 带多个多选列表项、带N个按钮的提示对话框
AlertDialog创建对话框的一般步骤为:
- 创建一个AlertDialog.Builder对象,AlertDialog是采用建造者模式设计的,为此我们需要先创建一个AlertDialog的建造者
- 调用AlertDialog.Builder对象的方法为其设置图标、标题、内容和按钮等
- 调用AlertDialog.Builder对象的的create方法创建一个AlertDialog对象
- 调用AlertDialog对象的show方法显示对话框
- 在适当的条件下调用AlertDialog对象的dismiss方法取消对话框
为对话框设置标题和图标:
- builder.setIcon(icon);
- builder.setTitle(title);
创建带消息、带两个个按钮的提示对话框:
- builder.setMessage(message);
- builder.setPositiveButton(text, listener);
builder.setNegativeButton(text, listener);
buidler还可以使用下面的方法创建一个装饰性按钮:
builder.setNeutralButton(text, listener):创建普通列表对话框
带列表、带N个按钮的提示对话框:
builder.setItems(items, listener):创建普通列表对话框
builder.setSingleChoiceItems(items, checkedItem, listener): 创建单选列表对话框
builder.setMultiChoiceItems(items, checkedItems, listener):创建多选列表对话框
使用自定义的对话框:
一般系统默认的对话框的样式和我们的app的设计风格相差很远,使用原生对话框会让我们的应用看起来很丑,所以大多数时候我们需要自定义我们的对话款的界面,我看见多很多的方法,包括去修改AlertDialog的源码等方法,我一般会使用一个比较简单的方法,其步骤如下:
- 自定义一个对话框的界面,包括对话框的标题等
- 创建一个AlertDialog对象并直接调用show方法将其显示出,注意不要做其它的设置
- 调用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);