HarmonyOS 鸿蒙Next popup部分蒙层

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next popup部分蒙层 如图1,怎么实现popup部分蒙层,图2用mask属性上半部分也灰了

2 回复

"~~~ // xxx.ets import { RectShape } from ‘@kit.ArkUI’ @Entry @Component struct PopupExample { @State handlePopup: boolean = false @State customPopup: boolean = false @State isBlack: boolean = false private arr: number[] = [0, 1, 2, 3, 4] // popup构造器定义弹框内容 @Builder popupBuilder() { Row({ space: 2 }) { Image($r(“app.media.app_icon”)).width(24).height(24).margin({ left: -5 }) Text(‘Custom Popup’).fontSize(10) }.width(100).height(50).padding(5) } @Builder TestList() { if (this.isBlack) { Column() { List({ space: 20, initialIndex: 0 }) { ForEach(this.arr, (item: number) => { ListItem() { Text(’’ + item) .width(‘100%’).height(100).fontSize(16) .textAlign(TextAlign.Center).borderRadius(10).backgroundColor(0xFFFFFF) } }, (item: string) => item) } .listDirection(Axis.Vertical) // 排列方向 .scrollBar(BarState.Off) .friction(0.6) .divider({ strokeWidth: 2, color: 0xFFFFFF, startMargin: 20, endMargin: 20 }) // 每行之间的分界线 .edgeEffect(EdgeEffect.Spring) // 边缘效果设置为Spring .onScrollIndex((firstIndex: number, lastIndex: number, centerIndex: number) => { console.info(‘first’ + firstIndex) console.info(‘last’ + lastIndex) console.info(‘center’ + centerIndex) }) .onScrollVisibleContentChange((start: VisibleListContentInfo, end: VisibleListContentInfo) => { console.log(’ start index: ’ + start.index + ’ start item group area: ’ + start.itemGroupArea + ’ start index in group: ’ + start.itemIndexInGroup) console.log(’ end index: ’ + end.index + ’ end item group area: ’ + end.itemGroupArea + ’ end index in group: ’ + end.itemIndexInGroup) }) .onDidScroll((scrollOffset: number, scrollState: ScrollState) => { console.info(onScroll scrollState = ScrollState + scrollState + , scrollOffset = + scrollOffset) }) .width(‘90%’) } .width(‘100%’) .height(‘100%’) .backgroundColor(0xDCDCDC) .padding({ top: 5 }) } else { Column() { List({ space: 20, initialIndex: 0 }) { ForEach(this.arr, (item: number) => { ListItem() { Text(’’ + item) .width(‘100%’).height(100).fontSize(16) .textAlign(TextAlign.Center).borderRadius(10).backgroundColor(0xFFFFFF) } }, (item: string) => item) } .listDirection(Axis.Vertical) // 排列方向 .scrollBar(BarState.Off) .friction(0.6) .divider({ strokeWidth: 2, color: 0xFFFFFF, startMargin: 20, endMargin: 20 }) // 每行之间的分界线 .edgeEffect(EdgeEffect.Spring) // 边缘效果设置为Spring .onScrollIndex((firstIndex: number, lastIndex: number, centerIndex: number) => { console.info(‘first’ + firstIndex) console.info(‘last’ + lastIndex) console.info(‘center’ + centerIndex) }) .onScrollVisibleContentChange((start: VisibleListContentInfo, end: VisibleListContentInfo) => { console.log(’ start index: ’ + start.index + ’ start item group area: ’ + start.itemGroupArea + ’ start index in group: ’ + start.itemIndexInGroup) console.log(’ end index: ’ + end.index + ’ end item group area: ’ + end.itemGroupArea + ’ end index in group: ’ + end.itemIndexInGroup) }) .onDidScroll((scrollOffset: number, scrollState: ScrollState) => { console.info(onScroll scrollState = ScrollState + scrollState + , scrollOffset = + scrollOffset) }) .width(‘90%’) } .width(‘100%’) .height(‘100%’) .backgroundColor(0xDCDCDC) .padding({ top: 5 }) } } build() { Flex({ direction: FlexDirection.Column }) { Column() { Text(“一个超大标题”) .height(‘20%’).width(‘100%’) .textAlign(TextAlign.Center) // PopupOptions 类型设置弹框内容 Button(‘PopupOptions’) .onClick(() => { this.handlePopup = !this.handlePopup this.isBlack = !this.isBlack }) .bindPopup(this.handlePopup, { message: ‘This is a popup with PopupOptions’, placement: Placement.Bottom, placementOnTop: true, showInSubWindow: false, primaryButton: { value: ‘confirm’, action: () => { this.handlePopup = !this.handlePopup console.info(‘confirm Button click’) } }, // 第二个按钮 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 this.isBlack = false } } }) this.TestList() } }.width(‘100%’).padding({ top: 5 }) } }

"

更多关于HarmonyOS 鸿蒙Next popup部分蒙层的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对帖子标题“HarmonyOS 鸿蒙Next popup部分蒙层”的问题,这里提供一个简洁的回答:

在HarmonyOS中,实现Next popup部分蒙层效果通常涉及到UI组件的层级管理和透明度设置。HarmonyOS提供了丰富的UI组件和布局管理器,你可以利用这些工具来创建所需的蒙层效果。

具体来说,你可以通过以下步骤来实现:

  1. 创建Popup窗口:使用HarmonyOS提供的Popup组件或自定义Dialog来实现弹出窗口。

  2. 设置蒙层:在Popup窗口中,添加一个覆盖整个屏幕的透明视图作为蒙层。可以通过设置该视图的背景颜色和透明度来调整蒙层效果。

  3. 添加内容视图:在蒙层之上,添加你需要显示的内容视图,如文本、按钮等。

  4. 管理层级:确保内容视图位于蒙层之上,且Popup窗口的层级高于其他UI组件。

  5. 显示和隐藏Popup:根据需要,通过编程方式控制Popup窗口的显示和隐藏。

请注意,以上步骤是基于HarmonyOS的一般性建议,并可能需要根据具体的UI设计和需求进行调整。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部