重载Dialog onCreateDialog(int id)方法,在
使用showDialog(int id)方法时会调用
onCreateDialog方法,通过id判断执行指定的代码。
setIcon指定左边的图标。
通过setMessage设置一个比较长的显示文本。
setItems设置列表以及选择事件,onClick中的which参数传递了第几个选项被点击,计数从0开始。
可以通过ProgressDialog类直接实例一个进度条对话框。setProgressStyle设置进度条的样式,setMax设置进度条最大值。setButton设置按钮。这里通过Handler更新进度条:
setSingleChoiceItems第二个参数是默认选中的单选项,选择一个单选项后不会自动关闭关闭这个对话框,需要我们自己在单击事件中关闭。
setMultiChoiceItems第二个参数定义了一个boolean型的数组来表示哪个选择被默认选中。
从联系人中取得信息,如果是模拟器的话,自己添加一些联系人。
使用文本框接收用户的输入,setView可以自定义对话框的样式。
1. Ok Cancel dialog with a message
return new AlertDialog.Builder(AlertDialogSamples.this)
.setIcon(R.drawable.alert_dialog_icon)
.setTitle(R.string.alert_dialog_two_buttons_title)
.setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
})
.setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
})
.create();
setIcon指定左边的图标。
setTitle指定说明文字。
setPositiveButton指定确定按钮的显示文本和按钮点击监听。
setNegativeButton指定取消按钮显示的文本和点击监听。
2. Ok Cancel dialog with a long message
return new AlertDialog.Builder(AlertDialogSamples.this)
.setIcon(R.drawable.alert_dialog_icon)
.setTitle(R.string.alert_dialog_two_buttons_msg)
.setMessage(R.string.alert_dialog_two_buttons2_msg)
.setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
})
.setNeutralButton(R.string.alert_dialog_something, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
})
.setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
})
.create();
通过setMessage设置一个比较长的显示文本。
setNeutralButton指定一个中间显示的按钮。
3. List Dialog
return new AlertDialog.Builder(AlertDialogSamples.this)
.setTitle(R.string.select_dialog)
.setItems(R.array.select_dialog_items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
String[] items = getResources().getStringArray(R.array.select_dialog_items);
new AlertDialog.Builder(AlertDialogSamples.this)
.setMessage("You selected: " + which + " , " + items[which])
.show();
}
})
.create();
setItems设置列表以及选择事件,onClick中的which参数传递了第几个选项被点击,计数从0开始。
4. Progress dialog
mProgressDialog = new ProgressDialog(AlertDialogSamples.this);
mProgressDialog.setIcon(R.drawable.alert_dialog_icon);
mProgressDialog.setTitle(R.string.select_dialog);
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mProgressDialog.setMax(MAX_PROGRESS);
mProgressDialog.setButton(DialogInterface.BUTTON_POSITIVE,
getText(R.string.alert_dialog_hide), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
});
mProgressDialog.setButton(DialogInterface.BUTTON_NEGATIVE,
getText(R.string.alert_dialog_cancel), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
});
return mProgressDialog;
可以通过ProgressDialog类直接实例一个进度条对话框。setProgressStyle设置进度条的样式,setMax设置进度条最大值。setButton设置按钮。这里通过Handler更新进度条:
mProgressHandler.sendEmptyMessage(0);
5. Single choice list
return new AlertDialog.Builder(AlertDialogSamples.this)
.setIcon(R.drawable.alert_dialog_icon)
.setTitle(R.string.alert_dialog_single_choice)
.setSingleChoiceItems(R.array.select_dialog_items2, 0, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
})
setSingleChoiceItems第二个参数是默认选中的单选项,选择一个单选项后不会自动关闭关闭这个对话框,需要我们自己在单击事件中关闭。
6. Repeat Alarm
return new AlertDialog.Builder(AlertDialogSamples.this)
.setIcon(R.drawable.ic_popup_reminder)
.setTitle(R.string.alert_dialog_multi_choice)
.setMultiChoiceItems(R.array.select_dialog_items3,
new boolean[]{false, true, false, true, false, false, false},
new DialogInterface.OnMultiChoiceClickListener() {
public void onClick(DialogInterface dialog, int whichButton,
boolean isChecked) {
}
})
setMultiChoiceItems第二个参数定义了一个boolean型的数组来表示哪个选择被默认选中。
7. Send call to VoiceMail
String[] projection = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts.SEND_TO_VOICEMAIL
};
Cursor cursor = managedQuery(ContactsContract.Contacts.CONTENT_URI,
projection, null, null, null);
从联系人中取得信息,如果是模拟器的话,自己添加一些联系人。
8. Text Entry dialog
LayoutInflater factory = LayoutInflater.from(this);
final View textEntryView = factory.inflate(R.layout.alert_dialog_text_entry, null);
setView(textEntryView)
使用文本框接收用户的输入,setView可以自定义对话框的样式。