我在 attributeModifier 里设了背景,组件还是显示默认样式?

我用了 attributeModifier 来设置背景颜色,但按钮仍然是系统默认样式,好像我设置的样式没生效。下面是我写的:

Button("测试")
  .attributeModifier(new MyButtonModifier())

class MyButtonModifier implements AttributeModifier<ButtonAttribute> {
  applyNormalAttribute(instance: ButtonAttribute): void {
    instance.backgroundColor(Color.Yellow);
  }
}

是不是我设置错了?还是有优先级问题?

阅读 315
1 个回答

据我所知,同学你遇到的问题通常是因为组件样式被其他属性或样式冲突覆盖。

试着检查以下情况吧?

是否在 .attributeModifier() 之外又设置了 .backgroundColor() 等属性?
是否和系统状态样式冲突(比如 .stateStyles() 会覆盖)?

Button("测试")
  .attributeModifier(new MyButtonModifier())
// 不再单独设置 .backgroundColor()

不要在组件外部与 Modifier 同时设置同一属性;
属性优先级按设置顺序决定,后设置的会覆盖先前的。