- 文档
- 知识库
- 教程
- OpenHarmony
【免费下载链接】CangjieCorpus
本仓库为仓颉编程语言语料库,聚焦 仓颉编程语言 核心知识体系,整合官方开发指南、API 文档、典型代码示例及语法规范等多维度资源,经结构化处理与专业标注,构建为支持 RAG(检索增强生成)技术 的高质量知识基座,适配智能编码助手、学习辅助工具等应用开发需求。 欢迎开发者基于本语料库构建仓颉语言智能应用,推动鸿蒙开发生态智能化升级!
本文基于 OpenHarmony 仓颉(Cangjie)应用开发参考文档,系统讲解 ArkUI(CJ) 中Divider分隔器组件的创建方式、四个核心组件属性(color、lineCap、strokeWidth、vertical)的完整用法与默认值,并结合横向/纵向分割线的完整可运行示例,帮助开发者掌握在仓颉声明式 UI 中分隔不同内容块、内容元素的实战能力。
组件概述
Divider是 ArkUI(CJ) 框架提供的分隔器组件,用于分隔不同的内容块或内容元素,是列表分组、按钮间隔、卡片内容划分等场景的基础构建单元。组件特性如下:
| 项目 | 说明 |
|---|---|
| 模块导入 | import kit.ArkUI.* |
| 子组件 | 无 |
| 系统能力 | SystemCapability.ArkUI.ArkUI.Full |
| 起始版本 | 22 |
| 通用属性/事件 | 全部支持 |
由于Divider支持全部通用属性与通用事件,除了本文介绍的四项组件属性外,还可以自由叠加布局(如width、height、margin、padding)、视觉(如opacity、backgroundColor)以及交互事件(如onClick)等能力,这也是官方示例中能够用Divider().vertical(true).height(22)...构造纵向细线的原因。
创建组件:init()
Divider通过默认构造方法创建实例,无需任何初始化参数:
public init()- 功能:创建一个分隔器组件。
- 系统能力:
SystemCapability.ArkUI.ArkUI.Full - 起始版本:22
创建之后,通常直接在build()声明式语法中实例化,并通过链式调用设置组件属性。例如Divider().strokeWidth(8).color(0xF1F3F5)即为“一条 8vp 宽、浅灰色的横向分割线”。
组件属性详解
color:设置分割线颜色
public func color(value: ?ResourceColor): This功能:设置分割线的颜色。系统能力SystemCapability.ArkUI.ArkUI.Full,起始版本 22。
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| value | ?ResourceColor | 是 | - | 分割线颜色。初始值:0x33182431 |
关于ResourceColor类型,根据 通用类型定义,Color、UInt32、Int64、AppResource均实现了ResourceColor接口,因此分割线颜色既可以直接传 32 位整型色值(如0xF1F3F5、示例中的0x182431),也可以使用Color枚举常量或资源引用。整型色值默认按0xAARRGGBB格式解析,例如初始值0x33182431是一个带 33(约 20% 不透明)透明度的深蓝灰色,使默认分割线呈现柔和的“毛玻璃分隔”观感。
lineCap:设置分割线端点样式
public func lineCap(value: ?LineCapStyle): This功能:设置当前在容器中的分割线端点样式。系统能力SystemCapability.ArkUI.ArkUI.Full,起始版本 22。
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| value | ?LineCapStyle | 是 | - | 分割线条的端点样式。初始值:LineCapStyle.Butt |
LineCapStyle是一个实现Equatable<LineCapStyle>的枚举,定义于 cj-common-types.md,包含三种取值:
| 枚举值 | 含义 |
|---|---|
Butt | 线条两端为平行线,不额外扩展(默认值) |
Round | 在线条两端延伸半个圆,直径等于线宽 |
Square | 在线条两端延伸半个圆,直径等于线宽(官方文档如此描述) |
端点样式在较粗的分割线上才容易观察差异:例如strokeWidth(8)的粗横线若使用LineCapStyle.Round,两端会呈现圆角半圆效果。
strokeWidth:设置分割线宽度
public func strokeWidth(value: ?Length): This功能:设置当前在容器中的分割线宽度。系统能力SystemCapability.ArkUI.ArkUI.Full,起始版本 22。
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| value | ?Length | 是 | - | 分割线宽度。不指定像素单位时,默认单位 vp。不支持百分比设置。优先级低于通用属性height,超过通用属性设置大小时,按照通用属性进行裁切。部分设备硬件中存在 1 像素取整后分割线不显示问题,建议使用 2 像素。初始值:1.0.px |
这里有三个关键实现细节值得注意:
- 单位规则:
Length接口由Float64、Int64、AppResource实现(参见 Length 定义),因此strokeWidth(8)直接写数值即可;不指定单位时默认按vp解析,也可通过.px、.fp、.lpx等后缀指定显式单位。 - 优先级裁切:
strokeWidth的优先级低于通用属性 height。例如横向分割线若被父容器布局或height通用属性约束了高度,当strokeWidth大于该高度时,会按通用属性值裁切显示。 - 硬件像素取整坑:官方明确提示,部分设备硬件上 1px 分割线经取整后可能完全不显示,因此实际业务中建议使用不小于 2 的宽度,或者按 vp 设置以保证跨设备可见性。
vertical:设置分割线方向
public func vertical(value: ?Bool): This功能:设置分割线的方向。系统能力SystemCapability.ArkUI.ArkUI.Full,起始版本 22。
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| value | ?Bool | 是 | - | 设置分割线的方向。初始值:false |
false(默认):横向分割线,沿父容器宽度方向延展,适合在Column中分隔上下两块内容;true:纵向分割线,沿父容器高度方向延展,适合在Row中分隔左右元素,例如分隔两个按钮。
纵向分割线的高度由布局决定,通常配合通用属性height控制其显示长度(见下方示例中的.height(22))。
完整示例:横向与纵向分割线
以下示例完整继承自官方文档 cj-blank-divider-divider.md,定义了Divider的方向、颜色及宽度,同时演示横向与纵向两种典型用法:
package ohos_app_cangjie_entry import kit.ArkUI.* import ohos.arkui.state_macro_manage.* @Entry @Component class EntryView { func build() { Column() { // 使用横向分割线场景 Text("Horizontal divider") .fontSize(9) .fontColor(0xCCCCCC) List() { ForEach( [1, 2, 3], { item: Int64, idx: Int64 => ListItem() { Text("list" + item.toString()) .width(100.percent) .fontSize(14) .fontColor(0x182431) .textAlign(TextAlign.Start) } .width(244) .height(48) } ) }.padding(left: 24, bottom: 8) Divider() .strokeWidth(8) .color(0xF1F3F5) List() { ForEach( [4, 5], { item: Int64, idx: Int64 => ListItem() { Text("list" + item.toString()) .width(100.percent) .fontSize(14) .fontColor(0x182431) .textAlign(TextAlign.Start) } .width(244) .height(48) } ) }.padding(left: 24, top: 8) // 使用纵向分割线场景 Text("Vertical divider") .fontSize(9) .fontColor(0xCCCCCC) Column() { Column() { Row() .width(288) .height(64) .backgroundColor(0x30C9F0) .opacity(0.3) Row() { Button("Button") .width(136) .height(22) .fontSize(16) .fontColor(0x007DFF) .fontWeight(FontWeight.W500) .backgroundColor(Color.Transparent) Divider() .vertical(true) .height(22) .color(0x182431) .opacity(0.6) .margin(left: 8, right: 8) Button("Button") .width(136) .height(22) .fontSize(16) .fontColor(0x007DFF) .fontWeight(FontWeight.W500) .backgroundColor(Color.Transparent) }.margin(top: 17) } .width(336) .height(152) .backgroundColor(0xFFFFFF) .borderRadius(24) .padding(24) } .width(100.percent) .height(168) .backgroundColor(0xF1F3F5) .justifyContent(FlexAlign.Center) .margin(top: 8) } .width(100.percent) .padding(top: 24) } }示例要点解析:
- 横向分割线:页面中部
Divider().strokeWidth(8).color(0xF1F3F5)将上下两个List列表块分隔开。这里使用了 8vp 的较粗分割线与浅灰底色0xF1F3F5,视觉上形成“分组带”效果,同时验证了strokeWidth数值参数(默认 vp)与color整型色值的直接传参方式。 - 纵向分割线:在
Row容器内,两个Button之间插入Divider().vertical(true),并用通用属性.height(22)控制纵向长度、.color(0x182431)与.opacity(0.6)控制颜色深浅、.margin(left: 8, right: 8)控制与两侧按钮的间距。这体现了“组件属性 + 通用属性”组合定制的模式——vertical决定方向,其余尺寸、颜色、位置均由通用属性完成。 - 布局配合:外层
Column使用.width(100.percent)撑满宽度,内层白色卡片使用.borderRadius(24)与.padding(24)构成典型的卡片式分组结构,横向Divider恰好承担卡片内部区块间的视觉分隔职责。
使用建议
- 细线可见性:默认宽度为 1.0.px,受硬件取整影响,在部分设备上可能不显示;生产环境建议使用 2vp 以上的宽度,或明确指定 vp 单位。
- 方向与尺寸联动:横向分割线宽度由
strokeWidth控制、长度由父容器宽度决定;纵向分割线高度由通用属性height控制。注意strokeWidth优先级低于height,超出部分会被裁切。 - 默认配色:初始颜色
0x33182431带 20% 透明度,与深色主题文字颜色协调;浅色主题下通常显式指定更柔和的灰阶色值。 - 与其他空白组件配合:若需要的是占位空白而非可见线条,可使用同目录下的
Blank组件(参见 Blank 组件文档);Divider与Blank同属空白/分隔类组件,可按需选用。
相关参考文档
- Divider 组件官方参考
- Blank 组件参考
- 通用类型定义(ResourceColor / Length / LineCapStyle)
- 通用属性:尺寸(width/height)
以上 API 均要求系统能力SystemCapability.ArkUI.ArkUI.Full,起始版本为 22,请在对应版本的 OpenHarmony 仓颉开发环境中验证运行。
- 文档
- 知识库
- 教程
- OpenHarmony
【免费下载链接】CangjieCorpus
本仓库为仓颉编程语言语料库,聚焦 仓颉编程语言 核心知识体系,整合官方开发指南、API 文档、典型代码示例及语法规范等多维度资源,经结构化处理与专业标注,构建为支持 RAG(检索增强生成)技术 的高质量知识基座,适配智能编码助手、学习辅助工具等应用开发需求。 欢迎开发者基于本语料库构建仓颉语言智能应用,推动鸿蒙开发生态智能化升级!
相关推荐
如何用React Native Elements Divider组件打造专业分隔线:从基础到高级样式定制全指南
如何用React Native Elements Divider组件打造专业分隔线:从基础到高级样式定制全指南 React Native Elements是一个
UI组件移动开发前端仓颉 ArkUI 文本显示组件详解:Text 与 Span 的创建、样式定制与事件响应实战指南
仓颉 ArkUI 文本显示组件详解:Text 与 Span 的创建、样式定制与事件响应实战指南 本篇技术指南以 OpenHarmony 仓颉(Cangjie)A
文档知识库教程OpenHarmonyTDesign Divider 分割线组件详解:从基础用法到源码级样式定制
TDesign Divider 分割线组件详解:从基础用法到源码级样式定制 导读 TDesign 是腾讯开源的企业级设计体系, tdesign miniprog
前端UI组件小程序设计系统移动开发
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考