2025-09-28 11:28:40 +08:00
|
|
|
interface ButtonStyle extends SizeOptions {
|
|
|
|
|
fontColor?: ResourceColor
|
|
|
|
|
fontSize?: number
|
2025-09-23 16:46:30 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class CusButtonModifier implements AttributeModifier<RowAttribute> {
|
|
|
|
|
public normalImage?: Resource
|
|
|
|
|
public activeImage?: Resource
|
|
|
|
|
|
|
|
|
|
applyNormalAttribute(instance: RowAttribute): void {
|
|
|
|
|
if (this.normalImage) {
|
|
|
|
|
instance.backgroundImage(this.normalImage).backgroundImageSize({ width: "100%", height: "100%" })
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
applyPressedAttribute(instance: RowAttribute): void {
|
|
|
|
|
if (this.activeImage) {
|
|
|
|
|
instance.backgroundImage(this.activeImage).backgroundImageSize({ width: "100%", height: "100%" })
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Component
|
|
|
|
|
export struct CusButton {
|
2025-10-13 10:17:12 +08:00
|
|
|
@Prop text: string = ""
|
2025-10-17 10:27:45 +08:00
|
|
|
@Prop style: ButtonStyle
|
2025-09-23 16:46:30 +08:00
|
|
|
public normalImage?: Resource
|
|
|
|
|
public activeImage?: Resource
|
|
|
|
|
private modifier: CusButtonModifier = new CusButtonModifier()
|
|
|
|
|
|
|
|
|
|
aboutToAppear(): void {
|
|
|
|
|
this.setAttr()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
setAttr() {
|
|
|
|
|
this.modifier.normalImage = this.normalImage
|
|
|
|
|
this.modifier.activeImage = this.activeImage
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
build() {
|
|
|
|
|
Row() {
|
|
|
|
|
if (this.text) {
|
2025-09-28 11:28:40 +08:00
|
|
|
Text(this.text)
|
|
|
|
|
.fontFamily("Alimama")
|
|
|
|
|
.fontSize(this.style?.fontSize || 18)
|
|
|
|
|
.fontColor(this.style?.fontColor || 0xffffff)
|
2025-09-23 16:46:30 +08:00
|
|
|
}
|
|
|
|
|
}
|
2025-09-26 17:32:42 +08:00
|
|
|
.width(this.style?.width || "100%")
|
2025-09-23 16:46:30 +08:00
|
|
|
.height(this.style?.height)
|
|
|
|
|
.justifyContent(FlexAlign.Center)
|
|
|
|
|
.attributeModifier(this.modifier)
|
|
|
|
|
}
|
|
|
|
|
}
|