在entry页面隐藏状态栏无效? HarmonyOS 鸿蒙Next

在entry页面隐藏状态栏无效? HarmonyOS 鸿蒙Next

cke_21026.png

主页面Index的aboutToAppear中设置隐藏状态栏的代码就有效!

如果从Index通过router跳转到一个新entry页面,再次在aboutToAppear中设置隐藏状态栏的代码就无效了?

但是在这个新页面的onPageShow中设置隐藏状态栏的代码就有效了?

这是什么原因,有大佬能解释一下吗?

在EntryAbility中保存了window.WindowStage

代码如下(把下面代码的aboutToAppear代码打开,把onPageShow的代码隐藏,

注意:不要在loadContent中的主页面设置这段代码就可以复现问题)

@Entry
@Component
struct BarTextColor {
  onPageShow(): void {
    const windowStage: window.WindowStage = AppStorage.get("windowStage") as window.WindowStage;
    const mainWindow: window.Window = windowStage.getMainWindowSync(); //获取主窗口的方式
    mainWindow.setSpecificSystemBarEnabled('status', false)
      .then(() => {
        console.info('Succeeded in setting the status bar to be invisible.');
      })
      .catch((err: BusinessError) => {
        console.error(`Failed to set the status bar to be invisible. Code is ${err.code}, message is ${err.message}`);
      });
  }

  build() {
    Column({ space: 10 }) {
      Text('状态栏修改demo').fontSize(25).fontColor(0x3399FF)
    }.width('100%').height('100%').justifyContent(FlexAlign.Center).alignItems(HorizontalAlign.Center)
  }
}

更多关于在entry页面隐藏状态栏无效? HarmonyOS 鸿蒙Next的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于在entry页面隐藏状态栏无效? HarmonyOS 鸿蒙Next的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙Next)中,隐藏状态栏的相关操作可以通过配置config.json文件或使用Window类的API来实现。如果隐藏状态栏无效,可能的原因包括:

  1. config.json未正确配置:在config.jsonmodule部分,确保window字段中设置了"statusBar": false。示例如下:

    {
      "module": {
        "window": {
          "statusBar": false
        }
      }
    }
    
  2. Window API未正确调用:在EntryAbility或相关页面中,使用Window类的setStatusBarVisibility方法,确保传入了false值。示例如下:

    let windowClass = window.getTopWindow();
    windowClass.setStatusBarVisibility(false);
    
  3. 页面层级问题:如果页面中存在多个窗口或组件,确保隐藏状态栏的操作在正确的窗口或组件上执行。

  4. 系统版本兼容性:某些版本的HarmonyOS可能对隐藏状态栏的支持存在差异,建议检查系统版本是否支持相关API。

  5. 权限问题:确保应用拥有ohos.permission.SYSTEM_FLOAT_WINDOW权限,部分功能可能需要特定权限才能生效。

如果以上检查均无误,但仍无法隐藏状态栏,可能是系统或框架层的限制。

回到顶部