HarmonyOS 有没有针对page页面级别的状态栏设置接口,如:高亮图标、沉浸式状态栏

有没有针对page页面级别的状态栏设置接口,如:高亮图标、沉浸式状态栏?

咨询场景描述:对状态栏的设置仅对当前page生效,当前page退出或者打开新的pag则使用系统默认的状态栏样式

HarmonyOS
2024-08-10 11:33:54
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

高亮demo:

import { window } from '@kit.ArkUI'; 
import { BusinessError } from '@kit.BasicServicesKit'; 
 
@Entry 
@Component 
struct Index { 
 
  updateStatusBar() { 
    window.getLastWindow(getContext(this), (err: BusinessError, windowClass: window.Window) => { 
      try { 
        let systemBarProperties: window.SystemBarProperties = { 
          isStatusBarLightIcon: false, 
        } 
        windowClass.setWindowSystemBarProperties(systemBarProperties) 
      } catch (exception) { 
        console.error('Failed to set the system bar properties. Cause: ' + JSON.stringify(exception)) 
      } 
    }); 
  } 
 
  build() { 
 
    Column() { 
      Button('修改状态栏') 
        .onClick(() => { 
          this.updateStatusBar( 
          ) 
        }) 
    } 
    .height('100%') 
    .width('100%') 
    .alignItems(HorizontalAlign.Center) 
    .justifyContent(FlexAlign.Center) 
 
 
  } 
}

沉浸式状态栏实现方法:1.获取应用主窗口。 通过getMainWindow接口获取应用主窗口。

2.实现沉浸式效果。有以下两种方式:

  • 方式一:调用setWindowSystemBarEnable接口,设置导航栏、状态栏不显示,从而达到沉浸式效果。
  • 方式二:调用setWindowLayoutFullScreen接口,设置应用主窗口为全屏布局;然后调用setWindowSystemBarProperties接口,设置导航栏、状态栏的透明度、背景/文字颜色以及高亮图标等属性,使之保持与主窗口显示协调一致,从而达到沉浸式效果。3.加载显示沉浸式窗口的具体内容。 通过loadContent接口加载沉浸式窗口的具体内容。
import UIAbility from '@ohos.app.ability.UIAbility'; 
export default class EntryAbility 
extends UIAbility { onWindowStageCreate(windowStage) { 
    // 1.获取应用主窗口。  
    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)); 
      // 2.实现沉浸式效果。 
      //方式一:设置导航栏、状态栏不显示。 
      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.'); }); 
      // 2.实现沉浸式效果。 
      //方式二:设置窗口为全屏布局,配合设置导航栏、状态栏的透明度、背景/文字颜色及高亮图标等属性,与主窗口显示保持协调一致。 
      let isLayoutFullScreen = true; 
      windowClass.setWindowLayoutFullScreen(isLayoutFullScreen, (err) => { if (err.code) { console.error('Failed to set the window layout to full-screen mode. Cause:' + JSON.stringify(err)); return; } 
        console.info('Succeeded in setting the window layout to full-screen mode.'); }); 
      let sysBarProps = { statusBarColor: '#ff00ff', navigationBarColor: '#00ff00', 
        // 以下两个属性从API Version 8开始支持  
        statusBarContentColor: '#ffffff', 
        navigationBarContentColor: '#ffffff' }; 
      windowClass.setWindowSystemBarProperties(sysBarProps, (err) => { if (err.code) { 
        console.error('Failed to set the system bar properties. Cause: ' + JSON.stringify(err)); return; } 
        console.info('Succeeded in setting the system bar properties.'); 
      }); 
    }) 
    // 3.为沉浸式窗口加载对应的目标页面。  
    windowStage.loadContent("pages/page2", (err) => { if (err.code) { 
      console.error('Failed to load the content. Cause:' + JSON.stringify(err)); return; } console.info('Succeeded in loading the content.'); 
    }); 
  } 
}; 
分享
微博
QQ
微信
回复
2024-08-10 18:17:33
相关问题
如何设置沉浸状态栏
2460浏览 • 1回复 待解决
如何实现沉浸状态栏
462浏览 • 1回复 待解决
HarmonyOS 沉浸状态栏最佳实践
217浏览 • 1回复 待解决
沉侵状态栏获取状态栏高度为0
301浏览 • 1回复 待解决
全面屏手机的沉浸状态栏自适应
881浏览 • 1回复 待解决
ets开发如何设置隐藏状态栏
3304浏览 • 1回复 待解决
获取状态栏与导航高度
534浏览 • 1回复 待解决
如何设置状态栏和导航的颜色
2790浏览 • 1回复 待解决
元服务顶部状态栏怎么设置标题
1756浏览 • 3回复 待解决