HarmonyOS 鸿蒙Next怎么让部分页面沉浸式,部分不沉浸式显示
HarmonyOS 鸿蒙Next怎么让部分页面沉浸式,部分不沉浸式显示
页面要是沉浸式显示的所以,在 EntryAbility 设置了
windowStage.getMainWindow((err, windowClass) => {
windowClass.setWindowLayoutFullScreen(true)
windowClass.setWindowSystemBarEnable(['navigation'])
})
但是,跳转到 其他应用的页面后也会沉浸式显示 顶部返回按钮就基本看不见了,有没有手动,或者设置 让 部分页面设置 沉浸式显示, 部分页面一般的显示的方式?
更多关于HarmonyOS 鸿蒙Next怎么让部分页面沉浸式,部分不沉浸式显示的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
系统侧提供了两种方案(窗口全局布局【布局全屏】和组件安全区方案【绘制全屏】),对应官网文档可参考链接:
两种方案都有自己的特点,一个是绘制全屏,一个是布局全屏。从灵活度上,布局全屏是最灵活的,完全控制状态栏和导航栏。
而针对需要单独布局UI元素到状态栏和导航条区域的场景建议使用窗口全屏布局方案处理。应用可针对自身场景来选择使用哪种方案。
窗口管理不能对不同的页面进行统一的沉浸式设置,您可以在需要页面的生命周期中进行设置。
在EntryAbility的onWindowStageCreate方法中通过windowStage获取window,然后分别调用setWindowLayoutFullScreen和setWindowSystemBarEnable方法。
参考文档:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/application-window-stage-V5
示例如下:
let windowClass = null;
//获取窗口
windowStage.getMainWindow((err, data) => {
if (err.code) {
console.error('Failed to obtain the main window. Cause: ' + JSON.stringify(err));
return;
}
windowClass = data;
console.info('Succeeded in obtaining the main window. Data: ' + JSON.stringify(data));
//设置窗口全屏
windowClass.setWindowLayoutFullScreen(true)
let names = [];
//设置状态栏和导航栏不显示
windowClass.setWindowSystemBarEnable(names, (err) => {
if (err.code) {
console.error('Failed to set the system bar to be visible. Cause:' + JSON.stringify(err));
return;
}
console.info('Succeeded in setting the system bar to be visible.');
});
})
您可以在需要页面的生命周期里设置,不需要时隐藏,代码如下
// 页面生命周期:当页面显示时
onPageShow() {
window.getLastWindow(getContext(this), (err, win) => {
// 获取当前窗口的属性
let prop: window.WindowProperties = win.getWindowProperties();
// 打印当前窗口属性
console.log(JSON.stringify(prop));
win.setWindowSystemBarEnable([])
})
}
// 页面生命周期:当页面隐藏时
onPageHide() {
window.getLastWindow(getContext(this), (err, win) => {
// 设置当前窗口状态栏和导航栏为显示
win.setWindowSystemBarEnable(['status', 'navigation']);
})
}
更多关于HarmonyOS 鸿蒙Next怎么让部分页面沉浸式,部分不沉浸式显示的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS(鸿蒙)系统中,实现部分页面沉浸式、部分页面不沉浸式显示,通常涉及对页面布局和窗口属性的调整。以下是如何操作的基本思路:
-
沉浸式页面设置:
- 在需要沉浸式显示的页面中,通过设置窗口属性来实现。具体可以通过在页面的onAttach或onCreate等生命周期方法中调用系统API,如
setWindowFlags
,并传入相应的沉浸式标志,如LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
,同时确保背景透明或设置为需要的颜色。
- 在需要沉浸式显示的页面中,通过设置窗口属性来实现。具体可以通过在页面的onAttach或onCreate等生命周期方法中调用系统API,如
-
非沉浸式页面设置:
- 对于不需要沉浸式显示的页面,保持默认窗口属性即可,或者显式地清除沉浸式标志。这通常意味着不需要对窗口进行特殊处理,保持系统默认的UI显示行为。
-
页面切换与状态保持:
- 在页面切换时,确保正确加载和应用相应的窗口属性。这可能需要在页面的生命周期方法中适当处理,以保证沉浸式状态与非沉浸式状态的正确切换。
请注意,实际操作中可能需要根据具体的鸿蒙系统版本和API调整实现细节。如果上述方法无法直接应用或效果不佳,可能需要查阅最新的鸿蒙开发文档或参考官方示例代码。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html,