android 对话框大全,Android 对话框(Dialog)大全
Activities提供了一種方便管理的建立、保存、回復(fù)的對(duì)話框機(jī)制,例如onCreateDialog(int),?onPrepareDialog(int,?Dialog),?showDialog(int),?dismissDialog(int)等方法,若是使用這些方法的話,Activity將經(jīng)過(guò)getOwnerActivity()方法返回該Activity管理的對(duì)話框(dialog).android
onCreateDialog(int):當(dāng)你使用這個(gè)回調(diào)函數(shù)時(shí),Android系統(tǒng)會(huì)有效的設(shè)置這個(gè)Activity為每一個(gè)對(duì)話框的全部者,從而自動(dòng)管理每一個(gè)對(duì)話框的狀態(tài)并掛靠到Activity上。這樣,每一個(gè)對(duì)話框繼承這個(gè)Activity的特定屬性。好比,當(dāng)一個(gè)對(duì)話框打開(kāi)時(shí),菜單鍵顯示為這個(gè)Activity定義的選項(xiàng)菜單,音量鍵修改Activity使用的音頻流。ide
showDialog(int):當(dāng)你想要顯示一個(gè)對(duì)話框時(shí),調(diào)用showDialog(int?id)方法并傳遞一個(gè)惟一標(biāo)識(shí)這個(gè)對(duì)話框的整數(shù)。當(dāng)對(duì)話框第一次被請(qǐng)求時(shí),Android從你的Activity中調(diào)用onCreateDialog(int?id),你應(yīng)該在這里初始化這個(gè)對(duì)話框Dialog。這個(gè)回調(diào)方法被傳以和showDialog(int?id)相同的ID。當(dāng)你建立這個(gè)對(duì)話框后,在Activity的最后返回這個(gè)對(duì)象。函數(shù)
onPrepareDialog(int,?Dialog):在對(duì)話框被顯示以前,Android還調(diào)用了可選的回調(diào)函數(shù)onPrepareDialog(int?id,?Dialog).若是你想在每一次對(duì)話框被打開(kāi)時(shí)改變它的任何屬性,你能夠定義這個(gè)方法。這個(gè)方法在每次打開(kāi)對(duì)話框時(shí)被調(diào)用,而onCreateDialog(int)僅在對(duì)話框第一次打開(kāi)時(shí)被調(diào)用。若是你不定義onPrepareDialog(),那么這個(gè)對(duì)話框?qū)⒈3趾蜕洗未蜷_(kāi)時(shí)同樣。這個(gè)方法也被傳遞以對(duì)話框的ID,和在onCreateDialog()中建立的對(duì)話框?qū)ο蟆2季?/p>
dismissDialog(int):當(dāng)你準(zhǔn)備關(guān)閉對(duì)話框時(shí),你能夠經(jīng)過(guò)對(duì)這個(gè)對(duì)話框調(diào)用dismiss()來(lái)消除它。若是須要,你還能夠從這個(gè)Activity中調(diào)用dismissDialog(int?id)方法,這實(shí)際上將為你對(duì)這個(gè)對(duì)話框調(diào)用dismiss()方法。?若是你想使用onCreateDialog(int?id)方法來(lái)管理你對(duì)話框的狀態(tài)(就如同在前面的章節(jié)討論的那樣),而后每次你的對(duì)話框消除的時(shí)候,這個(gè)對(duì)話框?qū)ο蟮臓顟B(tài)將由該Activity保留。若是你決定再也不須要這個(gè)對(duì)象或者清除該狀態(tài)是重要的,那么你應(yīng)該調(diào)用removeDialog(int?id)。這將刪除任何內(nèi)部對(duì)象引用并且若是這個(gè)對(duì)話框正在顯示,它將被消除。ui
下面是幾種對(duì)話框的效果this
圖1spa
圖2xml
圖3對(duì)象
圖4繼承
圖5
圖6
圖7
圖1效果:該效果是當(dāng)按返回按鈕時(shí)彈出一個(gè)提示,來(lái)確保無(wú)誤操做,采用常見(jiàn)的對(duì)話框樣式。
代碼:
建立對(duì)話框方法dialog()
protected?void?dialog()?{AlertDialog.Builder?builder?=?new?Builder(Main.this);builder.setMessage("確認(rèn)退出嗎?");
builder.setTitle("提示");
builder.setPositiveButton("確認(rèn)",?new?OnClickListener()?{
@Overridepublic?void?onClick(DialogInterface?dialog,?int?which)?{dialog.dismiss();
Main.this.finish();}});
builder.setNegativeButton("取消",?new?OnClickListener()?{
@Overridepublic?void?onClick(DialogInterface?dialog,?int?which)?{dialog.dismiss();}});
builder.create().show();}
在onKeyDown(int?keyCode,?KeyEvent?event)方法中調(diào)用此方法
public?boolean?onKeyDown(int?keyCode,?KeyEvent?event)?{if?(keyCode?==?KeyEvent.KEYCODE_BACK?&&?event.getRepeatCount()?==?0)?{dialog();}return?false;}
圖2效果:改變了對(duì)話框的圖表,添加了三個(gè)按鈕
Dialog?dialog?=?new?AlertDialog.Builder(this).setIcon(android.R.drawable.btn_star).setTitle("喜愛(ài)調(diào)查").setMessage("你喜歡李連杰的電影嗎?").setPositiveButton("很喜歡",new?OnClickListener()?{
@Overridepublic?void?onClick(DialogInterface?dialog,?int?which)?{//?TODO?Auto-generated?method?stubToast.makeText(Main.this,?"我很喜歡他的電影。",Toast.LENGTH_LONG).show();}}).setNegativeButton("不喜歡",?new?OnClickListener()?{
@Overridepublic?void?onClick(DialogInterface?dialog,?int?which)?{//?TODO?Auto-generated?method?stubToast.makeText(Main.this,?"我不喜歡他的電影。",?Toast.LENGTH_LONG).show();}}).setNeutralButton("通常",?new?OnClickListener()?{
@Overridepublic?void?onClick(DialogInterface?dialog,?int?which)?{//?TODO?Auto-generated?method?stubToast.makeText(Main.this,?"談不上喜歡不喜歡。",?Toast.LENGTH_LONG).show();}}).create();
dialog.show();
圖3效果:信息內(nèi)容是一個(gè)簡(jiǎn)單的View類(lèi)型
new?AlertDialog.Builder(this).setTitle("請(qǐng)輸入").setIcon(android.R.drawable.ic_dialog_info).setView(new?EditText(this)).setPositiveButton("肯定",?null).setNegativeButton("取消",?null).show();
圖4效果:信息內(nèi)容是一組單選框
new?AlertDialog.Builder(this).setTitle("復(fù)選框").setMultiChoiceItems(new?String[]?{?"Item1",?"Item2"?},?null,?null).setPositiveButton("肯定",?null).setNegativeButton("取消",?null).show();
圖5效果:信息內(nèi)容是一組多選框
new?AlertDialog.Builder(this).setTitle("單選框").setIcon(android.R.drawable.ic_dialog_info).setSingleChoiceItems(new?String[]?{?"Item1",?"Item2"?},?0,new?DialogInterface.OnClickListener()?{public?void?onClick(DialogInterface?dialog,?int?which)?{dialog.dismiss();}}).setNegativeButton("取消",?null).show();
圖6效果:信息內(nèi)容是一組簡(jiǎn)單列表項(xiàng)
new?AlertDialog.Builder(this).setTitle("列表框").setItems(new?String[]?{?"Item1",?"Item2"?},?null).setNegativeButton("肯定",?null).show();
圖7效果:信息內(nèi)容是一個(gè)自定義的布局
1.布局文件
2.調(diào)用代碼
LayoutInflater?inflater?=?getLayoutInflater();View?layout?=?inflater.inflate(R.layout.dialog,(ViewGroup)?findViewById(R.id.dialog));
new?AlertDialog.Builder(this).setTitle("自定義布局").setView(layout).setPositiveButton("肯定",?null).setNegativeButton("取消",?null).show();
總結(jié)
以上是生活随笔為你收集整理的android 对话框大全,Android 对话框(Dialog)大全的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python中如何引入π_python如
- 下一篇: Android 沉浸式状态栏攻略 让你的