HarmonyOS 深色模式的时候字体颜色和弹框颜色?

请问设置深色模式的时候字体颜色还有弹框颜色应该如何设置?

阅读 531
1 个回答

1.颜色适配(字体颜色和弹窗背景色),自定义两套颜色资源(resources/dark/element/color.json和resources/base/element/color.json),通过$r的方式加载颜色资源的key值。 通过系统资源实现,开发者可直接使用的系统预置资源,即分层参数,同一资源ID在设备类型、深浅色等不同配置下有不同的取值。通过使用系统资源,不同的开发者可以开发出具有相同视觉风格的应用,不需要自定义2份颜色资源,在深浅色模式下也会自动切换成不同的颜色值。

2.状态栏字体颜色可通过设置statusBarContentColor修改, 参考文档如下:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5\#systembarproperties

实现状态栏图标颜色动态修改,每个页面还是需要在每个页面设置颜色,如果动态的存取可以用堆栈集合等方式对颜色的值进行取值。 在需要改变的页面直接调用setWindowSystemBarProperties方法,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5\#setwindowsystembarproperties9

可参考如下demo:

import { window } from '@kit.ArkUI';

@Entry
@Component
struct Index {
  @State imgFit: ImageFit = ImageFit.Auto;

  change(): void {
    window.getLastWindow(getContext(), (err, data) => {
      let win: window.Window;
      if (err.code) {
        console.error("error code :" + JSON.stringify(err.code))
        return;
      }
      try {
        win = data;
        //设置窗口为全屏模式
        // win.setWindowLayoutFullScreen(true);
        // 设置状态栏
        win.setWindowSystemBarProperties({
          // 设置状态栏颜色为其他颜色
          statusBarColor: '#ffc41212',
          // 设置状态栏文本颜色为白色
          statusBarContentColor: '#ff81f362'
        })
        console.info('带状态栏沉浸式窗口设置完成')
      } catch (expextion) {
        console.error("error cause :" + JSON.stringify(expextion))
      }
    })
  }

  build() {
    Row() {
      Column({ space: 10 }) {
        Button("change").onClick(() => {
          this.change()
        })
      }
      .height('100%')
    }
    .width('100%')
    .backgroundColor(Color.Black)
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进