HarmonyOS 鸿蒙Next 使用 AttributeUpdater 设置背景颜色,组件背景不随深色模式切换

发布于 1周前 作者 sinazl 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 使用 AttributeUpdater 设置背景颜色,组件背景不随深色模式切换

代码如下,在真机上运行的.

  • 使用的系统中自带的颜色 $r("sys.color.background_secondary") ,不过我也尝试过自定义的颜色(有设置base和dark下的内容),均无效。
  • 另外,我在 new AttributeUpdater<NavigationAttribute>() 设置的navBarWidth 在切换夜间模式也一样失效。
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
  modifier = new AttributeUpdater<ColumnAttribute>()
  onPageShow(): void {
    this.modifier.attribute?.backgroundColor($r("sys.color.background_secondary"))
  }
  build() {
    Row() {
      Column()
      .attributeModifier(this.modifier)
      .width('100%').height('100%')
    }
  }
}
 
2 回复
5.updateConstructorParams当前只支持Button,Image,Text和Span组件。
cke_449.png

在HarmonyOS鸿蒙Next系统中,使用AttributeUpdater设置组件背景颜色时,如果背景颜色不随深色模式切换,通常是因为颜色设置没有遵循系统主题配置规范。确保你的代码在适应深色模式时,能够动态更新颜色值。

首先,检查你的颜色资源是否使用了系统主题色。在资源文件中,使用如?colorPrimary?android:attr/colorBackground这样的系统主题属性,而非硬编码的颜色值。

其次,确认AttributeUpdater的使用是否正确。AttributeUpdater主要用于动态更新组件属性,你需要确保在更新背景颜色时,传入的是能够根据系统主题变化的颜色资源。

再者,检查应用的主题配置。确保你的应用主题已经正确设置了深色模式支持,包括在styles.xml中配置dayNight模式主题。

最后,验证是否在合适的生命周期方法中调用了AttributeUpdater进行更新。例如,在onConfigurationChanged方法中处理配置变化,以确保当系统切换到深色模式时,能够正确更新组件背景。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部