HarmonyOS 想把某个属性单独写出来通用怎么弄?

.shadow({
  radius: 1,
  type: ShadowType.COLOR,
  color: '#0FB3B3B3',
  offsetY: 3,
  fill: true
})

例如这个

阅读 496
1 个回答

可以使用attributeModifier动态属性设置,

//1.commonStyles.ets
export  class MyButtonModifier implements AttributeModifier<ButtonAttribute> {
  isDark: boolean = false
  applyNormalAttribute(instance: ButtonAttribute): void {
    if (this.isDark) {
      instance.backgroundColor(Color.Black)
    } else {
      instance.backgroundColor(Color.Red)
        instance.shadow({
          radius: 1,
          type: ShadowType.COLOR,
          color: Color.Green,
          offsetY: 3,
          fill: true
        })
    }
  }
}
//2.index.ets
import { MyButtonModifier } from './commonStyles'
@Entry
@Component
struct attributeDemo {
  @State modifier: MyButtonModifier = new MyButtonModifier()

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