在aboutToAppear中隐藏状态栏无效? HarmonyOS 鸿蒙Next

在aboutToAppear中隐藏状态栏无效? HarmonyOS 鸿蒙Next image.png

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

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

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

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

在EntryAbility中保存了window.WindowStage

image.png

代码如下(把下面代码的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)
  }
}

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

5 回复

我这边没法复现问题呢,我这边是loadContent到index页面,然后index页面中aboutToAppear和onPageShow都可以隐藏状态栏,然后我设置index页面不执行隐藏状态栏,index页面通过

router.pushUrl({
  url: 'pages/Test19',
  params: {}
})

跳转到第二个页面,第二个页面里无论是在aboutToAppear或者onPageShow中都还是可以隐藏状态栏的

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


是不是用真机测试的?

用的真机,

用模拟器试试呢,可能模拟器有问题,也可能和ide版本有关,我的是5.0.7.210,

在HarmonyOS中,aboutToAppear生命周期函数用于页面即将显示时执行的操作。如果你在aboutToAppear中尝试隐藏状态栏但无效,可能是因为状态栏的隐藏操作需要在页面生命周期更早的阶段执行。你可以尝试在onPageShowonPageHide等生命周期函数中进行状态栏的隐藏操作。此外,确保你使用的是正确的API,如window.setWindowSystemBarEnable来控制状态栏的显示与隐藏。检查代码逻辑和生命周期函数的调用顺序,确保在页面显示前状态栏已被正确隐藏。

回到顶部