HarmonyOS鸿蒙Next系统导航中的悬浮导航功能是否可以在App页面中屏蔽
HarmonyOS鸿蒙Next系统导航中的悬浮导航功能是否可以在App页面中屏蔽 App中某些场景下需要进入沉浸态,系统的悬浮导航(透明圆形悬浮球)有什么办法屏蔽掉? 请大神帮忙看看
使用setWindowSystemBarEnable测试可以隐藏掉悬浮窗,参考沉浸式页面实现-窗口与屏幕管理-应用框架 - 华为HarmonyOS开发者,代码可以试下:
import { common } from '@kit.AbilityKit';
@Entry
@Component
struct PageFloat {
@State message: string = 'Hello World';
context = this.getUIContext()?.getHostContext() as common.UIAbilityContext;
private windowClass = this.context.windowStage.getMainWindowSync();
build() {
Column() {
Button('全屏').onClick((event: ClickEvent) => {
this.windowClass.setWindowLayoutFullScreen(true);
this.windowClass.setWindowSystemBarEnable([]);
})
Button('取消全屏').onClick((event: ClickEvent) => {
this.windowClass.setWindowLayoutFullScreen(false);
this.windowClass.setWindowSystemBarEnable(['status', 'navigation']);
})
}
.height('100%')
.width('100%')
}
}
更多关于HarmonyOS鸿蒙Next系统导航中的悬浮导航功能是否可以在App页面中屏蔽的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
有道理,不过本质上不是修改用户设置,是定义沉浸态后,沉浸态里面不显示悬浮球。
这个或许可以提工单让华为加这个功能,正常的沉浸态不变,然后加点参数,让我们定义一些特殊的沉浸态,
可以尝试调用窗口全屏接口,使系统自动隐藏悬浮导航:
import { window } from '@kit.ArkUI';
// 获取当前窗口实例
window.getLastWindow(this.context).then(currentWindow => {
// 开启全屏沉浸式布局
currentWindow.setWindowLayoutFullScreen(true);
});
在 HarmonyOS NEXT 里,“透明圆形悬浮球”属于系统导航辅助(华为叫「悬浮导航」,OV 叫「悬浮球」),不在应用窗口层级,所以不能像隐藏状态栏/导航栏那样,用 WindowInsetsController 或 SYSTEM_UI_FLAG 直接关掉;
- 也没有官方 API 让第三方 App 直接“屏蔽”或“强制关闭”它只能被引导用户手动关闭,或者监听自己的生命周期,在沉浸场景把用户可能误触的区域做手势拦截/遮罩提示
嗯嗯,我看视频播放的时候,悬浮球是会隐藏的,不知道其他类似的场景是不是会自动隐藏,
这个可以直接设置取消的,
嗯嗯,不是想要自己设备上取消,是我提供的app,用户进入到app某个页面时,屏蔽掉悬浮导航球,
HarmonyOS Next系统的悬浮导航功能目前不支持在单个App页面内屏蔽。该功能属于系统级导航方案,由系统层面统一管理控制。应用开发者无法通过现有API接口或配置文件直接禁用特定页面的悬浮导航。系统导航栏的显示逻辑由鸿蒙框架层直接处理,应用层不具备修改权限。当前公开的SDK文档中未提供相关控制方法。
在HarmonyOS Next中,可以通过Window
类的setSystemBarEnable()
方法控制导航栏的显示状态,从而实现沉浸式体验。以下是一个示例代码片段:
import window from '@ohos.window';
// 获取当前窗口并隐藏导航栏
let windowClass = await window.getLastWindow(this.context);
windowClass.setSystemBarEnable(['status', 'navigation']);
将navigation
参数从数组中移除即可隐藏悬浮导航。注意,此操作会影响整个窗口的导航栏,建议在特定页面(如游戏、视频播放页)使用,退出时恢复系统栏显示以确保正常交互。