W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
給組件綁定popup彈窗,并設(shè)置彈窗內(nèi)容,交互邏輯和顯示狀態(tài)。
名稱 | 參數(shù)類型 | 描述 |
---|---|---|
bindPopup | show: boolean, popup: PopupOptions | CustomPopupOptions8+ | 給組件綁定Popup彈窗,設(shè)置參數(shù)show為true彈出彈框。 show: 彈窗顯示狀態(tài),默認(rèn)值為false,隱藏彈窗。popup彈窗必須等待頁(yè)面全部構(gòu)建完成才能展示,因此show不能在頁(yè)面構(gòu)建中設(shè)置為true,否則會(huì)導(dǎo)致popup彈窗顯示位置及形狀錯(cuò)誤。 popup: 配置當(dāng)前彈窗提示的參數(shù)。 |
名稱 | 類型 | 必填 | 描述 |
---|---|---|---|
message | string | 是 | 彈窗信息內(nèi)容。 |
placementOnTop | boolean | 否 | 是否在組件上方顯示,默認(rèn)值為false。 |
primaryButton | { value: string, action: () => void } | 否 | 第一個(gè)按鈕。 value: 彈窗里主按鈕的文本。 action: 點(diǎn)擊主按鈕的回調(diào)函數(shù)。 |
secondaryButton | { value: string, action: () => void } | 否 | 第二個(gè)按鈕。 value: 彈窗里輔助按鈕的文本。 action: 點(diǎn)擊輔助按鈕的回調(diào)函數(shù)。 |
onStateChange | (event: { isVisible: boolean }) => void | 否 | 彈窗狀態(tài)變化事件回調(diào),參數(shù)isVisible為彈窗當(dāng)前的顯示狀態(tài)。 |
arrowOffset9+ | 否 | popup箭頭在彈窗處的偏移。箭頭在氣泡上下方時(shí),數(shù)值為0表示箭頭居最左側(cè),偏移量為箭頭至最左側(cè)的距離,默認(rèn)居中。箭頭在氣泡左右側(cè)時(shí),偏移量為箭頭至最上側(cè)的距離,默認(rèn)居中。如果顯示在屏幕邊緣,氣泡會(huì)自動(dòng)左右偏移,數(shù)值為0時(shí)箭頭始終指向綁定組件。 | |
showInSubWindow9+ | boolean | 否 | 是否在子窗口顯示氣泡,默認(rèn)值為false。 |
名稱 | 類型 | 必填 | 描述 |
---|---|---|---|
builder | 是 | 提示氣泡內(nèi)容的構(gòu)造器。 說(shuō)明: popup為通用屬性,自定義popup中不支持再次彈出popup。對(duì)builder下的第一層容器組件不支持使用position屬性,如果使用將導(dǎo)致氣泡不顯示。 builder中若使用自定義組件,自定義組件的aboutToAppear和aboutToDisappear生命周期與popup彈窗的顯隱無(wú)關(guān),不能使用其生命周期判斷popup彈窗的顯隱。 | |
placement | 否 | 氣泡組件優(yōu)先顯示的位置,當(dāng)前位置顯示不下時(shí),會(huì)自動(dòng)調(diào)整位置。 默認(rèn)值:Placement.Bottom | |
popupColor | 否 | 提示氣泡的顏色。 | |
enableArrow | boolean | 否 | 是否顯示箭頭。 從API Version 9開(kāi)始,如果箭頭所在方位側(cè)的氣泡長(zhǎng)度不足以顯示下箭頭,則會(huì)默認(rèn)不顯示箭頭。比如:placement設(shè)置為L(zhǎng)eft,此時(shí)如果氣泡高度小于箭頭的寬度(32vp)與氣泡圓角兩倍(48vp)之和(80vp),則實(shí)際不會(huì)顯示箭頭。 默認(rèn)值:true |
autoCancel | boolean | 否 | 頁(yè)面有操作時(shí),是否自動(dòng)關(guān)閉氣泡。 默認(rèn)值:true |
onStateChange | (event: { isVisible: boolean }) => void | 否 | 彈窗狀態(tài)變化事件回調(diào),參數(shù)為彈窗當(dāng)前的顯示狀態(tài)。 |
arrowOffset9+ | 否 | popup箭頭在彈窗處的偏移。箭頭在氣泡上下方時(shí),數(shù)值為0表示箭頭居最左側(cè),偏移量為箭頭至最左側(cè)的距離,默認(rèn)居中。箭頭在氣泡左右側(cè)時(shí),偏移量為箭頭至最上側(cè)的距離,默認(rèn)居中。如果顯示在屏幕邊緣,氣泡會(huì)自動(dòng)左右偏移,數(shù)值為0時(shí)箭頭始終指向綁定組件。 | |
showInSubWindow9+ | boolean | 否 | 是否在子窗口顯示氣泡,默認(rèn)值為false。 |
- // xxx.ets
- @Entry
- @Component
- struct PopupExample {
- @State handlePopup: boolean = false
- @State customPopup: boolean = false
- // popup構(gòu)造器定義彈框內(nèi)容
- @Builder popupBuilder() {
- Row({ space: 2 }) {
- Image($r("app.media.image")).width(24).height(24).margin({ left: -5 })
- Text('Custom Popup').fontSize(10)
- }.width(100).height(50).padding(5)
- }
- build() {
- Flex({ direction: FlexDirection.Column }) {
- // PopupOptions 類型設(shè)置彈框內(nèi)容
- Button('PopupOptions')
- .onClick(() => {
- this.handlePopup = !this.handlePopup
- })
- .bindPopup(this.handlePopup, {
- message: 'This is a popup with PopupOptions',
- placementOnTop: true,
- showInSubWindow:false,
- primaryButton: {
- value: 'confirm',
- action: () => {
- this.handlePopup = !this.handlePopup
- console.info('confirm Button click')
- }
- },
- // 第二個(gè)按鈕
- secondaryButton: {
- value: 'cancel',
- action: () => {
- this.handlePopup = !this.handlePopup
- console.info('cancel Button click')
- }
- },
- onStateChange: (e) => {
- console.info(JSON.stringify(e.isVisible))
- if (!e.isVisible) {
- this.handlePopup = false
- }
- }
- })
- .position({ x: 100, y: 50 })
- // CustomPopupOptions 類型設(shè)置彈框內(nèi)容
- Button('CustomPopupOptions')
- .onClick(() => {
- this.customPopup = !this.customPopup
- })
- .bindPopup(this.customPopup, {
- builder: this.popupBuilder,
- placement: Placement.Top,
- maskColor: '0x33000000',
- popupColor: Color.Yellow,
- enableArrow: true,
- showInSubWindow: false,
- onStateChange: (e) => {
- if (!e.isVisible) {
- this.customPopup = false
- }
- }
- })
- .position({ x: 80, y: 200 })
- }.width('100%').padding({ top: 5 })
- }
- }
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: