对话框之前已经掌握了普通对话框(AlertDialog)以及进度条对话框(ProgressDialog)。
除此以外,对话框还支持选择类对话框,包括单选,多选,下拉列表型选项这三种。
同时,对话框还提供了自定义对话框的功能,可以自己将一个已有的布局导入到对话框中显示。
还支持日期和时间选择类的对话框。
先来看选择类的对话框,还是使用AlertDialog,但不再设置Message,改为设置选项。
// 弹出一个选择提示框
Builder builder = new Builder(MainActivity.this);
builder.setTitle("提示");
builder.setItems(new String[] { "查看详情", "打开", "删除" },
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
switch (which) {
case 0:
Toast.makeText(MainActivity.this,
"这里是查看详情", Toast.LENGTH_SHORT)
.show();
break;
case 1:
Toast.makeText(MainActivity.this, "这里可以编写打开文件的操作", Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(MainActivity.this, "加入删除的操作", Toast.LENGTH_SHORT).show();
break;
}
}
});
builder.setPositiveButton("关闭", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.create().show();
还可以使用单选或多选的形式来选择。
builder.setSingleChoiceItems(
new String[] { "查看详情", "打开", "删除" }, 0,
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
switch (which) {
case 0:
Toast.makeText(MainActivity.this,
"这里是查看详情", Toast.LENGTH_SHORT)
.show();
break;
case 1:
Toast.makeText(MainActivity.this,
"这里可以编写打开文件的操作", Toast.LENGTH_SHORT)
.show();
break;
case 2:
Toast.makeText(MainActivity.this,
"加入删除的操作", Toast.LENGTH_SHORT)
.show();
break;
}
}
});
多选
builder.setMultiChoiceItems(
new String[] { "查看详情", "打开", "删除" }, new boolean[] {
false, true, true },
new OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which, boolean isChecked) {
switch (which) {
case 0:
Toast.makeText(MainActivity.this,
"这里是查看详情 --> " + isChecked, Toast.LENGTH_SHORT)
.show();
break;
case 1:
Toast.makeText(MainActivity.this,
"这里可以编写打开文件的操作 --> " + isChecked, Toast.LENGTH_SHORT)
.show();
break;
case 2:
Toast.makeText(MainActivity.this,
"加入删除的操作 --> " + isChecked, Toast.LENGTH_SHORT)
.show();
break;
}
}
});
日期和时间的选择,这种选择需要通过单独的对话框类来完成。
// 日期选择器, 注意,月份从0开始
DatePickerDialog dialog = new DatePickerDialog(
MainActivity.this, new OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
Toast.makeText(
MainActivity.this,
"设置的日期为: " + year + "-" + (monthOfYear + 1)
+ "-" + dayOfMonth,
Toast.LENGTH_LONG).show();
}
}, 2014, 3, 5);
dialog.show();
// 日期选择器, 注意,月份从0开始
TimePickerDialog dialog = new TimePickerDialog(
MainActivity.this, new OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view,
int hourOfDay, int minute) {
Toast.makeText(MainActivity.this,
"选择的时间为: " + hourOfDay + ":" + minute,
Toast.LENGTH_LONG).show();
}
}, 16, 20, true);
dialog.show();
如果想自定义布局来设置到Toast或AlertDialog中,就需要通过LayoutInflater配合setView方法来完成。
Builder builder = new Builder(MainActivity.this);
builder.setTitle("提示");
builder.setView(LayoutInflater.from(MainActivity.this).inflate(
R.layout.page_01, null));
builder.setPositiveButton("关闭", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.create().show();
如果想改为Toast,只需要通过Toast.makeText建立出Toast对象,并调用setView后,再调用show()方法即可。
Toast t = Toast.makeText(MainActivity.this, null,
Toast.LENGTH_LONG);
t.setView(LayoutInflater.from(MainActivity.this).inflate(
R.layout.page_01, null));
t.show();