警告彈窗(AlertDialog)使用文檔

一、概述

警告彈窗(AlertDialog)用于向用戶顯示重要信息或獲取用戶的確認(rèn)反饋碴巾。它從 API Version 7 開始支持厦瓢,在元服務(wù)中從 API version 11 開始支持,其功能依賴 UI 的執(zhí)行上下文,不可在 UI 上下文不明確的地方使用(從 API version 10 開始欺抗,可通過 UIContext 中的 showAlertDialog 明確 UI 執(zhí)行上下文)强重。

二、使用步驟

(一)獲取 UIContext 實(shí)例(推薦)

為避免實(shí)例不明確的問題佃声,建議使用getUIContext獲取 UIContext 實(shí)例圾亏,并使用showAlertDialog調(diào)用綁定實(shí)例的AlertDialog.show()。例如:

this.getUIContext().showAlertDialog(/*AlertDialog參數(shù)*/);

(二)定義彈窗參數(shù)

  1. 基本參數(shù)
    • title(可選夭问,ResourceStr 類型):彈窗標(biāo)題曹铃。
    • subtitle(可選陕见,從 API version 10 開始支持,ResourceStr 類型):彈窗副標(biāo)題灰粮。
    • message(必填蜕着,ResourceStr 類型):彈窗內(nèi)容承匣。
    • autoCancel(可選,boolean 類型嘉抒,默認(rèn)值為 true):點(diǎn)擊遮障層時(shí)是否關(guān)閉彈窗袍暴。
    • alignment(可選,DialogAlignment 枚舉類型岗宣,默認(rèn)值為 DialogAlignment.Default):彈窗在豎直方向上的對(duì)齊方式耗式。
    • offset(可選趁猴,默認(rèn)值為 {dx: 0, dy: 0}):彈窗相對(duì) alignment 所在位置的偏移量儡司。
    • gridCount(可選,number 類型跷坝,默認(rèn)值為 4):彈窗容器寬度所占用柵格數(shù)。
    • maskRect(可選笋婿,從 API version 10 開始支持顿颅,Rectangle 類型粱腻,默認(rèn)值為 {x: 0, y: 0, width: '100%', height: '100%'}):彈窗遮蔽層區(qū)域,在遮蔽層區(qū)域內(nèi)的事件不透傳捞慌,在遮蔽層區(qū)域外的事件透傳(showInSubWindow 為 true 時(shí)柬批,maskRect 不生效)氮帐。
    • showInSubWindow(可選,從 API version 11 開始支持皮服,boolean 類型龄广,默認(rèn)值為 false):某彈框需要顯示在主窗口之外時(shí)蕴侧,是否在子窗口顯示此彈窗。
    • isModal(可選奠衔,從 API version 11 開始支持,boolean 類型痊夭,默認(rèn)值為 true):彈窗是否為模態(tài)窗口她我,模態(tài)窗口有蒙層迫横,非模態(tài)窗口無蒙層矾踱。
    • backgroundColor(可選疏哗,從 API version 12 開始支持返奉,ResourceColor 類型,默認(rèn)值為 Color.Transparent):彈窗背板顏色(設(shè)置了非透明色時(shí)雷逆,backgroundBlurStyle 需設(shè)為 BlurStyle.NONE)污尉。
    • backgroundBlurStyle(可選被碗,從 API version 12 開始支持,BlurStyle 類型缩抡,默認(rèn)值為 BlurStyle.COMPONENT_ULTRA_THICK):彈窗背板模糊材質(zhì)(設(shè)置為 BlurStyle.NONE 可關(guān)閉背景虛化瞻想,設(shè)置了非 NONE 值時(shí)娩嚼,不要設(shè)置 backgroundColor)岳悟。
    • onWillDismiss(可選,從 API version 12 開始支持贵少,Callback<DismissDialogAction>類型):交互式關(guān)閉回調(diào)函數(shù)呵俏,可根據(jù)回調(diào)中的 reason 選擇是否能關(guān)閉彈窗(當(dāng)前不支持 CLOSE_BUTTON 枚舉值,且在 onWillDismiss 回調(diào)中不能再做 onWillDismiss 攔截)滔灶。
    • cornerRadius(可選普碎,從 API version 12 開始支持,可設(shè)置背板的圓角半徑录平,默認(rèn)值為 {topLeft: '32vp', topRight: '32vp', bottomLeft: '32vp', bottomRight: '32vp'}):圓角大小受組件尺寸限制麻车,最大值為組件寬或高的一半缀皱,若值為負(fù),則按默認(rèn)值處理动猬,也支持百分比參數(shù)方式啤斗。
    • transition(可選赁咙,從 API version 12 開始支持钮莲,設(shè)置彈窗顯示和退出的過渡效果)。
    • width(可選序目,從 API version 12 開始支持臂痕,設(shè)置彈窗背板的寬度,默認(rèn)最大值為 400vp猿涨,支持百分比參數(shù)方式)握童。
    • height(可選,從 API version 12 開始支持叛赚,設(shè)置彈窗背板的高度澡绩,默認(rèn)最大值為 0.9 *(窗口高度 - 安全區(qū)域),支持百分比參數(shù)方式)俺附。
    • borderWidth(可選肥卡,從 API version 12 開始支持,可分別設(shè)置 4 個(gè)邊框?qū)挾仁铝停J(rèn)值為 0步鉴,支持百分比參數(shù)方式)。
    • borderColor(可選璃哟,從 API version 12 開始支持氛琢,設(shè)置彈窗背板的邊框顏色,默認(rèn)值為 Color.Black随闪,需和 borderWidth 一起使用)阳似。
    • borderStyle(可選,從 API version 12 開始支持铐伴,設(shè)置彈窗背板的邊框樣式撮奏,默認(rèn)值為 BorderStyle.Solid,需和 borderWidth 一起使用)当宴。
    • shadow(可選畜吊,從 API version 12 開始支持,設(shè)置彈窗背板的陰影)户矢。
    • textStyle(可選玲献,從 API version 12 開始支持,設(shè)置彈窗 message 內(nèi)容的文本樣式)。
  2. 按鈕相關(guān)參數(shù)
    • 可以使用AlertDialogParamWithConfirm青自、AlertDialogParamWithButtonsAlertDialogParamWithOptions(從 API version 10 開始支持)來定義按鈕相關(guān)參數(shù)。
    • confirmAlertDialogParamWithConfirm中):包含確認(rèn) Button 的使能狀態(tài)(enabled驱证,默認(rèn)值為 true)延窜、默認(rèn)焦點(diǎn)(defaultFocus,默認(rèn)值為 false)抹锄、按鈕風(fēng)格(style逆瑞,默認(rèn)值為 DialogButtonStyle.DEFAULT)、文本內(nèi)容(value)伙单、文本色(fontColor)获高、按鈕背景色(backgroundColor)和點(diǎn)擊回調(diào)(action)。
    • primaryButtonsecondaryButtonAlertDialogParamWithButtons中):與confirm類似吻育,分別用于定義主要按鈕和次要按鈕的相關(guān)屬性念秧。
    • buttonsAlertDialogParamWithOptions中):是一個(gè)AlertDialogButtonOptions數(shù)組,用于定義彈窗容器中的多個(gè)按鈕布疼,每個(gè)按鈕包含使能狀態(tài)(enabled摊趾,默認(rèn)值為 true)、默認(rèn)焦點(diǎn)(defaultFocus游两,默認(rèn)值為 false)砾层、風(fēng)格樣式(style,默認(rèn)值為 DialogButtonStyle.DEFAULT)贱案、文本內(nèi)容(value肛炮,若為 null 則按鈕不顯示)、文本顏色(fontColor)宝踪、背景顏色(backgroundColor)和點(diǎn)擊回調(diào)(action)等屬性侨糟。同時(shí),還可以設(shè)置buttonDirection(可選肴沫,DialogButtonDirection 枚舉類型粟害,默認(rèn)值為 DialogButtonDirection.AUTO,用于指定按鈕排布方向)颤芬。

(三)顯示彈窗

使用AlertDialog.show方法并傳入定義好的參數(shù)來顯示彈窗悲幅,例如:

AlertDialog.show({
  title: 'title',
  message: 'text',
  autoCancel: true,
  alignment: DialogAlignment.Bottom,
  offset: { dx: 0, dy: -20 },
  gridCount: 3,
  confirm: {
    value: 'button',
    action: () => {
      console.info('Button-clicking callback');
    }
  },
  cancel: () => {
    console.info('Closed callbacks');
  },
  onWillDismiss: (dismissDialogAction: DismissDialogAction) => {
    console.info("reason=" + JSON.stringify(dismissDialogAction.reason));
    console.log("dialog onWillDismiss");
    if (dismissDialogAction.reason == DismissReason.PRESS_BACK) {
      dismissDialogAction.dismiss();
    }
    if (dismissDialogAction.reason == DismissReason.TOUCH_OUTSIDE) {
      dismissDialogAction.dismiss();
    }
  }
});

三、注意事項(xiàng)

  1. 盡量按照推薦方式獲取 UIContext 實(shí)例并顯示彈窗站蝠,以確保功能正常汰具。
  2. 在設(shè)置按鈕相關(guān)參數(shù)時(shí),注意各屬性的默認(rèn)值和優(yōu)先級(jí)菱魔,以及按鈕響應(yīng)的相關(guān)規(guī)則(如默認(rèn)響應(yīng) Enter 鍵能力在 defaultFocus 為 true 時(shí)不生效等)留荔。
  3. 當(dāng)設(shè)置背景相關(guān)屬性(如 backgroundColor 和 backgroundBlurStyle)時(shí),需遵循其相互制約的規(guī)則。
  4. 對(duì)于彈窗的各種尺寸和位置相關(guān)參數(shù)(如 width聚蝶、height杰妓、alignment、offset 等)碘勉,根據(jù)實(shí)際需求合理設(shè)置巷挥,以達(dá)到理想的彈窗顯示效果。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末验靡,一起剝皮案震驚了整個(gè)濱河市倍宾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌胜嗓,老刑警劉巖高职,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異辞州,居然都是意外死亡怔锌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門孙技,熙熙樓的掌柜王于貴愁眉苦臉地迎上來产禾,“玉大人,你說我怎么就攤上這事牵啦⊙乔椋” “怎么了?”我有些...
    開封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵哈雏,是天一觀的道長楞件。 經(jīng)常有香客問我,道長裳瘪,這世上最難降的妖魔是什么土浸? 我笑而不...
    開封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮彭羹,結(jié)果婚禮上黄伊,老公的妹妹穿的比我還像新娘。我一直安慰自己派殷,他們只是感情好还最,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著毡惜,像睡著了一般拓轻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上经伙,一...
    開封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天扶叉,我揣著相機(jī)與錄音,去河邊找鬼。 笑死枣氧,一個(gè)胖子當(dāng)著我的面吹牛溢十,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播达吞,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼茶宵,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了宗挥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤种蝶,失蹤者是張志新(化名)和其女友劉穎契耿,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體螃征,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡搪桂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了盯滚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片踢械。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖魄藕,靈堂內(nèi)的尸體忽然破棺而出内列,到底是詐尸還是另有隱情,我是刑警寧澤背率,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布话瞧,位于F島的核電站,受9級(jí)特大地震影響寝姿,放射性物質(zhì)發(fā)生泄漏交排。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一饵筑、第九天 我趴在偏房一處隱蔽的房頂上張望埃篓。 院中可真熱鬧,春花似錦根资、人聲如沸架专。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽胶征。三九已至,卻和暖如春桨仿,著一層夾襖步出監(jiān)牢的瞬間睛低,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留钱雷,地道東北人骂铁。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像罩抗,于是被迫代替她去往敵國和親拉庵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容