ArkUI(鸿蒙)中 组件的通用属性

本文同步发表于我的微信公众号,微信搜索 程语新视界 即可关注,每个工作日都有文章更新

一、尺寸与布局属性

1. 尺寸设置(单位:vp)

属性类型默认值说明示例
widthLength-组件宽度.width(100).width('50%')
heightLength-组件高度.height('100%')
size{ width: Length, height: Length }-同时设置宽高.size({ width: 100, height: 100 })
minWidthLength0最小宽度.minWidth(80)
maxHeightLengthInfinity最大高度.maxHeight(200)

2. 边距与间距(单位:vp)

属性类型说明示例
marginMargin | Length外边距.margin(10).margin({ top: 5, bottom: 5 })
paddingPadding | Length内边距.padding(15)
spaceLength子组件间距.space(8)

二、样式属性

1. 背景与边框

属性类型说明示例
backgroundColorResourceColor背景颜色.backgroundColor('#FF0000').backgroundColor($r('app.color.red'))
backgroundImagestring | PixelMap | Resource背景图片.backgroundImage('common/bg.png')
border{ width?: Length, color?: ResourceColor, radius?: Length }边框样式.border({ width: 2, color: '#000' })
borderRadiusLength | { topLeft?: Length, topRight?: Length, bottomLeft?: Length, bottomRight?: Length}圆角半径.borderRadius(10).borderRadius({ topLeft: 8 })

2. 透明度与可见性

属性类型说明示例
opacitynumber透明度(0-1).opacity(0.5)
visibilityVisibility可见性.visibility(Visibility.None)

三、文本样式属性

1. 字体相关

属性类型说明示例
fontColorResourceColor文字颜色.fontColor('#333')
fontSizeLength字体大小.fontSize(16)
fontStyleFontStyle字体样式.fontStyle(FontStyle.Italic)
fontWeightnumber | FontWeight字体粗细.fontWeight(FontWeight.Bold)
fontFamilystring字体家族.fontFamily('HarmonyOS Sans')

2. 文本布局

属性类型说明示例
textAlignTextAlign文本对齐.textAlign(TextAlign.Center)
lineHeightLength行高.lineHeight(24)
textOverflow{ overflow: TextOverflow }文本溢出.textOverflow({ overflow: TextOverflow.Ellipsis })
maxLinesnumber最大行数.maxLines(2)

四、布局控制属性

1. Flex布局

属性类型说明示例
flexGrownumber扩展比例.flexGrow(1)
flexShrinknumber收缩比例.flexShrink(0)
flexBasisLength基准尺寸.flexBasis('40%')
alignSelfItemAlign自身对齐.alignSelf(ItemAlign.Center)

2. 定位属性

属性类型说明示例
positionPosition定位类型.position(Position.Absolute)
markAnchor{ x: Length, y: Length }锚点.markAnchor({ x: 0.5, y: 0.5 })
offset{ x: Length, y: Length }偏移量.offset({ x: 10, y: -5 })

五、交互属性

1. 事件响应

属性类型说明示例
onClick(event: ClickEvent) => void点击事件.onClick(() => {})
onTouch(event: TouchEvent) => void触摸事件.onTouch((e) => {})
onKeyEvent(event: KeyEvent) => void按键事件.onKeyEvent((e) => {})

2. 状态效果

属性类型说明示例
stateEffectboolean | StateEffect状态效果.stateEffect(true)
hoverEffectHoverEffect悬停效果.hoverEffect(HoverEffect.Scale)
pressedEffectPressedEffect按压效果.pressedEffect(PressedEffect.Scale)

六、变换属性

属性类型说明示例
scale{ x: number, y: number, z?: number }缩放.scale({ x: 1.2, y: 1.2 })
rotate{ x?: number, y?: number, z?: number, angle: Angle }旋转.rotate({ z: 1, angle: 30 })
translate{ x?: Length, y?: Length, z?: Length }平移.translate({ x: 10 })
transformMatrix4Transit变换矩阵.transform({ matrix: [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1] })

七、阴影与滤镜

属性类型说明示例
shadow{ radius: Length, color?: ResourceColor, offsetX?: Length, offsetY?: Length}阴影效果.shadow({ radius: 8, color: '#888' })
backdropBlurnumber背景模糊.backdropBlur(5)
blurnumber模糊效果.blur(3)

八、栅格与约束

属性类型说明示例
gridSpannumber栅格跨度.gridSpan(2)
gridOffsetnumber栅格偏移.gridOffset(1)
constraintSize{ minWidth?: Length, maxWidth?: Length, minHeight?: Length, maxHeight?: Length}约束尺寸.constraintSize({ minWidth: 100 })

九、使用示例

@Entry
@Component
struct UniversalPropertiesExample {
  @State isActive: boolean = false;

  build() {
    Column() {
      Text('通用属性演示')
        .width('80%')
        .height(60)
        .margin(10)
        .padding(15)
        .backgroundColor('#F5F5F5')
        .borderRadius(8)
        .fontSize(20)
        .fontColor('#333')
        .onClick(() => {
          this.isActive = !this.isActive;
        })
        .stateEffect(this.isActive)//启用状态动画
        .scale(this.isActive ? { x: 1.05, y: 1.05 } : { x: 1, y: 1 })
        .animation({ duration: 300, curve: Curve.EaseOut })

      if (this.isActive) {
        Text('扩展内容')
          .width('70%')
          .height(100)
          .margin({ top: 20 })
          .transition({ type: TransitionType.Insert, opacity: 0 })
      }
    }
    .width('100%')
    .height('100%')
  }
}

十、注意事项

  1. 属性优先级

    • 后设置的属性会覆盖先设置的
    • 部分属性存在互斥关系(如position与flex布局相关属性)
  2. 性能优化

    • 避免频繁修改布局属性
    • 复杂动画优先使用transform而非布局属性
  3. 适配性

    • 百分比单位基于父容器
    • 不同设备上表现可能不同,需测试验证
  4. 资源引用

    • 颜色和图片建议使用资源文件引用
    • $r('app.type.name')方式引用资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值