HarmonyOS 鸿蒙Next模态内跳转不关闭
HarmonyOS 鸿蒙Next模态内跳转不关闭 使用模态弹出界面,点击界面元素跳转其他页面 再返回时 模态页面就会自动关闭,有什么方法或者配置能让模态不关闭? 或者怎么能给@Entry修饰的页面设置透明背景,透明部分能看到上一个页面 做一个假模态效果
可参考以下demo:
[@Entry](/user/Entry)
[@Component](/user/Component)
struct BindSheetDemo {
// 半模态转场显示隐藏控制
@State isShowSheet: boolean = false;
private menuList: string[] = ['不要辣', '少放辣', '多放辣', '不要香菜', '不要香葱', '不要一次性餐具', '需要一次性餐具'];
onPageShow(): void {
this.isShowSheet = !this.isShowSheet;
console.log('okokokokokok')
}
// 通过[@Builder](/user/Builder)构建半模态展示界面
[@Builder](/user/Builder)
mySheet() {
Column() {
Flex({ direction: FlexDirection.Row, wrap: FlexWrap.Wrap }) {
ForEach(this.menuList, (item: string) => {
Text(item)
.fontSize(16)
.fontColor(0x333333)
.backgroundColor(0xf1f1f1)
.borderRadius(8)
.margin(10)
.padding(10)
.onClick(() => {
router.pushUrl({
url: 'pages/pageTwo'
})
})
})
}
.padding({ top: 18 })
}
.width('100%')
.height('100%')
.backgroundColor(Color.White)
}
build() {
Column() {
Text('口味与餐具')
.fontSize(28)
.padding({ top: 30, bottom: 30 })
Column() {
Row() {
Row()
.width(10)
.height(10)
.backgroundColor('#a8a8a8')
.margin({ right: 12 })
.borderRadius(20)
Column() {
Text('选择点餐口味和餐具')
.fontSize(16)
.fontWeight(FontWeight.Medium)
}
.alignItems(HorizontalAlign.Start)
Blank()
Row()
.width(12)
.height(12)
.margin({ right: 15 })
.border({
width: { top: 2, right: 2 },
color: 0xcccccc
})
.rotate({ angle: 45 })
}
.borderRadius(15)
.shadow({ radius: 100, color: '#ededed' })
.width('90%')
.alignItems(VerticalAlign.Center)
.padding({ left: 15, top: 15, bottom: 15 })
.backgroundColor(Color.White)
// 通过选定的半模态接口,绑定模态展示界面,style中包含两个参数,一个是设置半模态的高度,不设置时默认高度是Large,一个是是否显示控制条DragBar,默认是true显示控制条,通过onDisappear控制状态变量变换。
.bindSheet(this.isShowSheet, this.mySheet(), {
height: 300,
dragBar: false,
onDisappear: () => {
this.isShowSheet = !this.isShowSheet;
}
})
.onClick(() => {
this.isShowSheet = !this.isShowSheet;
})
}
.width('100%')
}
.width('100%')
.height('100%')
.backgroundColor(0xf1f1f1)
}
}
目前半模态组件(bindSheet),全模态组件(bindContentCover),自定义弹窗组件(CustomDialog)都不支持返回时自动还原组件,因为所有的弹窗接口,Bindxx 都是跟宿主组件严格绑定的,如果想设置透明背景,可参考此demo:
import { webview } from '[@kit](/user/kit).ArkWeb';
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
[@Provide](/user/Provide)('NavPathStack') pageStack: NavPathStack = new NavPathStack()
[@Builder](/user/Builder)
PagesMap(name: string) {
if (name == 'DialogPage') {
DialogPage()
}
}
build() {
Navigation(this.pageStack) {
Button('Push DialogPage')
.margin(20)
.width('80%')
.onClick(() => {
this.pageStack.pushPathByName('DialogPage', '');
})
}
.mode(NavigationMode.Stack)
.title('Main')
.navDestination(this.PagesMap)
}
}
[@Component](/user/Component)
export struct DialogPage {
[@Consume](/user/Consume)('NavPathStack') pageStack: NavPathStack;
webContent: string =
"<p>三月</p><p><img src=\"https://qiance.qianfanyun.com/1539566909.gif\" title=\"1539566909.gif\" alt=\"0133e75674ca4332f8759f043f3536.gif\"/></p>";
webContent2: string =
"`<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"><html><head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0,maximum-scale=1.0, user-scalable=no\"><meta content=\"text/html;charset=UTF-8\" http-equiv=\"Content-Type\"/><meta content=\"no-cache,must-revalidate\" http-equiv=\"Cache-Control\"/><meta content=\"no-cache\" http-equiv=\"pragma\"/><meta content=\"0\" http-equiv=\"expires\"/><meta content=\"telephone=no, address=no\" name=\"format-detection\"/><meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\"/><meta name=\"apple-mobile-web-app-capable\" content=\"yes\"/><meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\"/><style type=\"text/css\">body{max-width: 100%;padding:0; margin:0;font-size: 16px; color:#333; line-height:24px;}p{margin-top:5px;margin-bottom:5px;}a{color:blue;}img{max-width: 100%;}</style></head><body><p>今天吃什么,晒出你的午餐吧!!!</p></body></html>`";
}
更多关于HarmonyOS 鸿蒙Next模态内跳转不关闭的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
针对“HarmonyOS 鸿蒙Next模态内跳转不关闭”的问题,这通常涉及到鸿蒙系统在应用开发中模态界面(Modal Interface)的管理。在鸿蒙系统中,模态跳转通常用于临时显示一个界面,而该界面在完成任务后应当能够关闭并返回到先前的界面。
如果你在Next模态内进行跳转而不希望关闭当前模态,这可能需要调整你的界面跳转逻辑。鸿蒙系统提供了丰富的界面跳转API,允许开发者控制跳转行为,包括是否关闭当前界面。
具体来说,你可以检查以下几个方面:
-
跳转API的使用:确保你使用的跳转API符合你的需求。鸿蒙系统可能提供了多种跳转方式,包括带返回和不带返回的跳转。
-
界面栈管理:理解并管理你的应用界面栈。在某些情况下,你可能需要手动管理界面栈,以确保界面按预期显示和关闭。
-
生命周期管理:确保你的界面生命周期管理正确。在鸿蒙系统中,界面的生命周期对界面的显示和关闭有重要影响。
如果上述方法无法解决你的问题,可能是因为你的具体实现细节有所不同。此时,建议查阅鸿蒙系统的官方文档,了解更详细的API使用说明和界面管理技巧。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html