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')方式引用资源
<think>首先,用户的问题是关于“ArkUI组件属性方法列表”。从系统指令中,我需要:-所有行内数学表达式使用$...$。-独立公式用$$...$$单独成段。-使用中文回答。-生成相关问题。-在引用的段落末尾添加引用标识。但在这个问题中,没有数学相关内容,所以我可能不需要使用数学格式。系统指令强调“如果可能涉及数学元素”,但这里用户的查询是关于ArkUI组件属性方法,这是一个UI框架话题,可能不涉及数学。ArkUI是一个基于TypeScript或JavaScript的UI框架,可能来自华为HarmonyOS。用户想查询属性方法列表。我的回答需要:1.结构清晰,帮助用户逐步解决问题。2.尽量保证回答真实可靠。3.使用中文。系统还要求在回答末尾生成相关问题。回顾历史对话:之前的对话是关于快速排序的示例,有Python代码和相关问题。用户的当前问题是新的,关于ArkUI。所以,我需要基于用户的上一条消息:"参考站内引用:。上述引用仅供参考,并不是用户真正的需求,请尽可能多的参考用户上一次的问题和你的回答。我想查询ArkUI组件属性方法列表请问ArkUI组件属性方法列表"用户说“参考站内引用”,但指的是之前的引用(可能是示例),并澄清不是真正的需求。真正的需求是查询ArkUI组件属性方法列表。现在,我的知识截止到2023年,ArkUI是一个声明式UI框架,用于HarmonyOS,类似于React或Flutter。它有组件,如Text、Button等,每个都有属性和方法。为了回答,我需要提供ArkUI组件属性方法列表。-列出常见组件及其属性和方法。-确保内容真实可靠:我会基于我的训练数据提供。ArkUI的官方文档是很好的参考。关键组件:-Text:属性如fontSize,color;方法可能少,因为是声明式。-Button:属性如text,onClick;方法是事件处理器。-Image:src属性等。由于属性方法可能很多,我会概述常见组件的。结构化回答:-引入什么是ArkUI组件。-列出几个核心组件及其常见属性和方法。-因为用户可能使用TypeScript或JavaScript,我会用代码示例(如系统指令中的代码格式示例)。-使用中文。系统指令说:"所有行内数学表达式...必须使用$...$格式",但这里没有数学,所以可以忽略。生成相关问题。在末尾添加引用标识:例如[^1],但需要引用的内容。ArkUI的官方文档可引用为[^1]。真实引用:我可以假设引用HarmonyOS官方文档,如[1]:华为开发者官网。最终回答结构:1.解释ArkUI组件的基本概念。2.提供组件列表及属性方法。3.代码示例(如系统有代码格式示例)。4.生成相关问题。5.末尾添加引用。内容:-ArkUI组件:如Column,Row,Text,Button,Image等。-属性:例如,Text的属性有fontSize,color,opacity等。-方法:在声明式UI中,属性往往是数据绑定,方法是事件回调。在ArkUI中,属性和方法可能定义为属性对象中的字段。例如:```typescriptText({fontSize:20,color:'red',onClick:()=>{//clickhandler}})```但在标准组件中,onClick可能是事件属性。列出具体:-Text:-属性:fontSize,color,backgroundColor,textAlign等。-方法:没有直接方法,事件如onClick。-Button:-属性:text,enabled,type等。-事件方法:onClick。-其他:Image,Container等。我会选择几个常见组件。</think> ### ArkUI组件属性方法列表 ArkUI华为HarmonyOS的声明式UI框架,组件通过属性和事件方法来实现UI定义和交互。属性用于设置组件的样式和行为,事件方法处理用户交互。以下是常见组件的核心属性方法列表(基于TypeScript示例)。由于组件库会根据HarmonyOS版本更新,建议参考官方文档获取最新信息[^1]。 #### 核心组件概述 在ArkUI中,组件分为基础组件(如Text、Button)和布局组件(如Column、Row)。属性通常在组件构造函数中设置,事件方法则通过回调函数实现。 1. **Text组件** (用于显示文本) - **属性列表**: - `fontSize`: 设置字体大小(单位: px),例如 `fontSize: 20`。 - `color`: 设置文本颜色(十六进制或命名颜色),例如 `color: '#ff0000'`。 - `backgroundColor`: 设置背景色,例如 `backgroundColor: '#f0f0f0'`。 - `opacity`: 设置透明度(0-1),例如 `opacity: 0.8`。 - `textAlign`: 设置文本对齐方式(`start`, `center`, `end`),例如 `textAlign: 'center'`。 - `fontWeight`: 设置字体粗细(`bold`, `normal`)。 - `fontFamily`: 设置字体家族(如 `'Arial'`)。 - `textDecoration`: 设置文本装饰(`underline`, `line-through`)。 - **事件方法**: - `onClick`: 点击事件处理器,例如 `onClick: () => { console.log('Text clicked'); }`。 - `onLongPress`: 长按事件处理器,例如 `onLongPress: () => { ... }`。 代码示例: ```typescript Text({ text: 'Hello ArkUI', fontSize: 20, color: 'red', onClick: () => { // 点击事件逻辑 } }) ``` 2. **Button组件** (用于创建可点击按钮) - **属性列表**: - `text`: 设置按钮文本,例如 `text: 'Submit'`。 - `enabled`: 设置按钮是否可用(布尔值),例如 `enabled: true`。 - `type`: 设置按钮类型(`normal`, `capsule`, `circle`),例如 `type: ButtonType.Capsule`。 - `backgroundColor`: 设置背景色。 - `borderRadius`: 设置圆角大小(单位: px),例如 `borderRadius: 10`。 - `fontSize`: 设置文本大小(类似于Text组件)。 - **事件方法**: - `onClick`: 点击事件处理器(主要方法),例如 `onClick: () => { alert('Button clicked'); }`。 - `onFocus`: 焦点事件处理器,例如 `onFocus: () => { ... }`。 - `onBlur`: 失去焦点事件处理器。 代码示例: ```typescript Button({ text: 'Click Me', type: ButtonType.Normal, backgroundColor: 'blue', onClick: () => { // 处理点击逻辑 } }) ``` 3. **Image组件** (用于显示图像) - **属性列表**: - `src`: 设置图像路径(URL或本地资源),例如 `src: $r('app.media.logo')`。 - `objectFit`: 设置图像适应方式(`contain`, `cover`, `none`)。 - `width`/`height`: 设置宽度和高度(单位: px),例如 `width: 100, height: 100`。 - `borderRadius`: 设置圆角。 - `opacity`: 设置透明度。 - `alt`: 设置替代文本(用于无障碍访问)。 - **事件方法**: - `onComplete`: 图像加载完成事件处理器。 - `onError`: 加载错误事件处理器,例如 `onError: () => { console.error('Image loading failed'); }`. - `onClick`: 点击事件处理器。 代码示例: ```typescript Image({ src: 'https://example.com/image.png', objectFit: ImageFit.Cover, width: 200, onError: () => { // 处理错误 } }) ``` 4. **布局组件** (如Column、Row,用于组织和排列子组件) - **属性列表**: - `space`: 设置组件间间距(单位: px),例如 `space: 10`。 - `alignItems`: 设置子组件对齐方式(`Start`, `Center`, `End`)。 - `justifyContent`: 设置主轴方向的对齐(`SpaceBetween`, `FlexStart`)。 - `width`/`height`: 设置大小。 - **事件方法**: 较少,通常通过子组件事件处理。 代码示例: ```typescript Column({ space: 20 }) { Text({ text: 'Item 1' }) Button({ text: 'Button', onClick: () => {} }) } ``` #### 关键说明 - **通用属性方法**:所有组件共享一些属性,如`opacity`、`visible`(控制可见性)、`id`(组件标识)。事件方法如`onAppear`(组件出现时触发)和`onDisappear`(组件消失时触发)。 - **最佳实践**:属性方法基于数据绑定,在`.ets`文件(ArkUI扩展名)中使用。动态更新属性可通过状态管理(如@State)实现。 - **局限性**:ArkUI组件的"方法"主要是事件驱动,而非直接函数调用。自定义组件可通过@Prop、@Link添加新属性[^1]。 官方推荐访问[Huawei Developer](https://developer.harmonyos.com)获取完整组件参考,这有助于开发高效UI界面[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值