HarmonyOS 鸿蒙Next中如何隐藏状态栏实现沉浸式效果

HarmonyOS 鸿蒙Next中如何隐藏状态栏实现沉浸式效果 如何隐藏状态栏实现沉浸式效果

5 回复

解决措施:

步骤一:可以在onWindowStageCreate方法获取windowClass对象。

onWindowStageCreate(windowStage) {
  // Main window is created, set main page for this ability
  console.log("[Demo] MainAbility onWindowStageCreate")
  windowStage.getMainWindow((err, data) => {
    if (err.code) {
      console.error('Failed to obtain the main window.')
      return;
    }
    // 获取到窗口对象
    globalThis.windowClass = data; 
  })
}

步骤二:设置窗口全屏,隐藏状态栏。

globalThis.windowClass.setFullScreen(isFullScreen, (err, data) => {
  if (err.code) {
    console.error('Failed to enable the full-screen mode. Cause:' + JSON.stringify(err));
    return;
  }
    console.info('Succeeded in enabling the full-screen mode. Data: ' + JSON.stringify(data));  
}); 

—结束

更多关于HarmonyOS 鸿蒙Next中如何隐藏状态栏实现沉浸式效果的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


你这是全屏,不是隐藏状态栏,你这连底部导航栏都没了。

请问一下步骤二为什么会报错,

在HarmonyOS(鸿蒙Next)中,实现沉浸式效果并隐藏状态栏可以通过以下步骤完成:

  1. 配置config.json文件:在应用的config.json文件中,找到abilities节点下的configChanges字段,添加"orientation""screenLayout",以确保在屏幕方向或布局变化时应用能够正确处理。

  2. 设置窗口标志:在应用的MainAbility或相关AbilityonWindowStageCreate方法中,使用Window类的setWindowSystemBarEnable方法来隐藏状态栏。代码如下:

    import window from '[@ohos](/user/ohos).window';
    
    onWindowStageCreate(windowStage: window.WindowStage) {
        let windowClass = windowStage.getMainWindow();
        windowClass.setWindowSystemBarEnable(['status'], false);
    }
    
  3. 调整布局:隐藏状态栏后,可能需要调整应用的布局,以避免内容被遮挡。可以通过设置Window类的setWindowLayoutFullScreen方法来实现全屏布局:

    windowClass.setWindowLayoutFullScreen(true);
    
  4. 处理系统手势:在沉浸式模式下,用户可能无法通过系统手势返回或呼出状态栏。可以通过监听触摸事件或使用Window类的setWindowTouchable方法来处理这些情况。

通过这些步骤,你可以在HarmonyOS(鸿蒙Next)中实现沉浸式效果并隐藏状态栏。

在HarmonyOS 鸿蒙Next中,你可以通过Window类的setStatusBarVisibility方法来隐藏状态栏,实现沉浸式效果。具体代码如下:

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

此方法会将状态栏和导航栏都隐藏,确保应用占据整个屏幕。你可以在onCreate方法中调用此代码,或者在需要时动态调整。

回到顶部