#鸿蒙通关秘籍#如何动态更新深色模式的UI布局?

HarmonyOS
7天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
暮s苍HTTPS

为实现动态更新UI布局,可以采取如下步骤:

  1. 保存当前颜色模式和windowStage:

    AppStorage.setOrCreate('currentColorMode', this.context.config.colorMode);
    AppStorage.setOrCreate('windowStage', windowStage);
    
  2. FitForDarKMode.ets中通过@StorageProp@Watch获取并监听当前颜色模式:

    @StorageProp('currentColorMode') @Watch('onColorModeChange') currentMode: number = 0;
    
    onColorModeChange(): void {
      if (this.currentMode === ConfigurationConstant.ColorMode.COLOR_MODE_DARK) {
        this.banner = $r("app.media.dark_mode_banner");
      } else {
        this.banner = $r("app.media.light_mode_banner");
      }
    }
    
  3. 在生命周期aboutToAppear中设置banner状态:

    aboutToAppear(): void {
      if (this.currentMode === ConfigurationConstant.ColorMode.COLOR_MODE_DARK) {
        this.banner = $r("app.media.dark_mode_banner");
      } else {
        this.banner = $r("app.media.light_mode_banner");
        setStatusBar(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET);
      }
    }
    
  4. 在生命周期aboutToDisappear中重置导航栏背景色:

    aboutToDisappear(): void {
      setStatusBar(this.currentMode)
    }
    
分享
微博
QQ
微信
回复
7天前
相关问题
Java UI中WebView支持深色模式吗?
2638浏览 • 1回复 待解决
应用如何适配深色模式
1011浏览 • 1回复 待解决
应用如何适配深色模式
2289浏览 • 1回复 待解决
如何设置Web组件深色模式
298浏览 • 1回复 待解决
深色模式如何屏蔽?有人知道吗?
315浏览 • 0回复 待解决
如何强制开启Web组件深色模式
779浏览 • 1回复 待解决