W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Popup屬性可綁定在組件上顯示氣泡彈窗提示,設(shè)置彈窗內(nèi)容、交互邏輯和顯示狀態(tài)。主要用于屏幕錄制、信息彈出提醒等顯示狀態(tài)。
氣泡分為兩種類型,一種是系統(tǒng)提供的氣泡PopupOptions,一種是開發(fā)者可以自定義的氣泡CustomPopupOptions。其中PopupOptions為系統(tǒng)提供的氣泡,通過配置primaryButton、secondaryButton來設(shè)置帶按鈕的氣泡。CustomPopupOptions通過配置builder參數(shù)來設(shè)置自定義的氣泡。
文本提示氣泡常用于只展示帶有文本的信息提示,不帶有任何交互的場(chǎng)景。Popup屬性需綁定組件,當(dāng)bindPopup屬性中參數(shù)show為true的時(shí)候會(huì)彈出氣泡提示。
在Button組件上綁定Popup屬性,每次點(diǎn)擊Button按鈕,handlePopup會(huì)切換布爾值,當(dāng)其為true時(shí),觸發(fā)bindPopup彈出氣泡。
- @Entry
- @Component
- struct PopupExample {
- @State handlePopup: boolean = false
- build() {
- Column() {
- Button('PopupOptions')
- .onClick(() => {
- this.handlePopup = !this.handlePopup
- })
- .bindPopup(this.handlePopup, {
- message: 'This is a popup with PopupOptions',
- })
- }.width('100%').padding({ top: 5 })
- }
- }
通過onStateChange參數(shù)為氣泡添加狀態(tài)變化的事件回調(diào),可以判斷當(dāng)前氣泡的顯示狀態(tài)。
- @Entry
- @Component
- struct PopupExample {
- @State handlePopup: boolean = false
- build() {
- Column() {
- Button('PopupOptions')
- .onClick(() => {
- this.handlePopup = !this.handlePopup
- })
- .bindPopup(this.handlePopup, {
- message: 'This is a popup with PopupOptions',
- onStateChange: (e)=> { // 返回當(dāng)前的氣泡狀態(tài)
- if (!e.isVisible) {
- this.handlePopup = false
- }
- }
- })
- }.width('100%').padding({ top: 5 })
- }
- }
通過primaryButton、secondaryButton屬性為氣泡最多設(shè)置兩個(gè)Button按鈕,通過此按鈕進(jìn)行簡(jiǎn)單的交互,開發(fā)者可以通過配置action參數(shù)來設(shè)置想要觸發(fā)的操作。
- @Entry
- @Component
- struct PopupExample22 {
- @State handlePopup: boolean = false
- build() {
- Column() {
- Button('PopupOptions').margin({ top: 200 })
- .onClick(() => {
- this.handlePopup = !this.handlePopup
- })
- .bindPopup(this.handlePopup, {
- message: 'This is a popup with PopupOptions',
- primaryButton: {
- value: 'Confirm',
- action: () => {
- this.handlePopup = !this.handlePopup
- console.info('confirm Button click')
- }
- },
- secondaryButton: {
- value: 'Cancel',
- action: () => {
- this.handlePopup = !this.handlePopup
- }
- },
- onStateChange: (e) => {
- if (!e.isVisible) {
- this.handlePopup = false
- }
- }
- })
- }.width('100%').padding({ top: 5 })
- }
- }
開發(fā)者可以使用構(gòu)建器CustomPopupOptions創(chuàng)建自定義氣泡,@Builder中可以放自定義的內(nèi)容。除此之外,還可以通過popupColor等參數(shù)控制氣泡樣式。
- @Entry
- @Component
- struct Index {
- @State customPopup: boolean = false
- // popup構(gòu)造器定義彈框內(nèi)容
- @Builder popupBuilder() {
- Row({ space: 2 }) {
- Image($r("app.media.icon")).width(24).height(24).margin({ left: 5 })
- Text('This is Custom Popup').fontSize(15)
- }.width(200).height(50).padding(5)
- }
- build() {
- Column() {
- Button('CustomPopupOptions')
- .position({x:100,y:200})
- .onClick(() => {
- this.customPopup = !this.customPopup
- })
- .bindPopup(this.customPopup, {
- builder: this.popupBuilder, // 氣泡的內(nèi)容
- placement:Placement.Bottom, // 氣泡的彈出位置
- popupColor:Color.Pink, // 氣泡的背景色
- onStateChange: (e) => {
- console.info(JSON.stringify(e.isVisible))
- if (!e.isVisible) {
- this.customPopup = false
- }
- }
- })
- }
- .height('100%')
- }
- }
使用者通過配置placement參數(shù)將彈出的氣泡放到需要提示的位置。彈窗構(gòu)造器會(huì)觸發(fā)彈出提示信息,來引導(dǎo)使用者完成操作,也讓使用者有更好的UI體驗(yàn)。
- @Entry
- @Component
- struct Index {
- @State customPopup: boolean = false
- // popup構(gòu)造器定義彈框內(nèi)容
- @Builder popupBuilder() {
- Row({ space: 2 }) {
- Image('/images/shengWhite.png').width(30).objectFit(ImageFit.Contain)
- Column(){
- Text('控制人生').fontSize(14).fontWeight(900).fontColor(Color.White).width('100%')
- Text('想要跟唱時(shí),數(shù)千萬歌曲任你選擇,人聲隨心調(diào)整。').fontSize(12).fontColor('#ffeeeeee').width('100%')
- }
- }.width(230).height(80).padding(5)
- }
- build() {
- Row() {
- Text('我要K歌')
- Image('/images/sheng.png').width(35).objectFit(ImageFit.Contain)
- .onClick(() => {
- this.customPopup = !this.customPopup
- })
- .bindPopup(this.customPopup, {
- builder: this.popupBuilder,
- })
- }
- .margin(20)
- .height('100%')
- }
- }
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)系方式:
更多建議: