HarmonyOS 鸿蒙Next popup部分蒙层
HarmonyOS 鸿蒙Next popup部分蒙层 如图1,怎么实现popup部分蒙层,图2用mask属性上半部分也灰了
"~~~
// 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组件和布局管理器,你可以利用这些工具来创建所需的蒙层效果。
具体来说,你可以通过以下步骤来实现:
-
创建Popup窗口:使用HarmonyOS提供的Popup组件或自定义Dialog来实现弹出窗口。
-
设置蒙层:在Popup窗口中,添加一个覆盖整个屏幕的透明视图作为蒙层。可以通过设置该视图的背景颜色和透明度来调整蒙层效果。
-
添加内容视图:在蒙层之上,添加你需要显示的内容视图,如文本、按钮等。
-
管理层级:确保内容视图位于蒙层之上,且Popup窗口的层级高于其他UI组件。
-
显示和隐藏Popup:根据需要,通过编程方式控制Popup窗口的显示和隐藏。
请注意,以上步骤是基于HarmonyOS的一般性建议,并可能需要根据具体的UI设计和需求进行调整。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html