HarmonyOS:ArkTS RowSplit 组件自学指南

简介: 在 ArkTS 开发中,复杂界面布局需求常见,尤其需要灵活调整子组件宽度时,传统方式难以满足动态交互需求。`RowSplit` 组件解决了这一问题,支持横向布局并插入可拖动的分割线,让用户轻松调整子组件宽度,提升体验。本文详细介绍了 `RowSplit` 的功能、接口、属性及使用示例,帮助开发者掌握其用法,并总结了注意事项。通过合理配置,可实现灵活美观的布局效果。希望对您有帮助,欢迎关注、点赞和收藏!

在日常的 ArkTS 应用开发工作里,我常常要处理各种复杂的界面布局需求。尤其是在需要将多个子组件进行横向排列,并且希望用户能够灵活调整子组件宽度的场景下,传统的布局方式显得十分繁琐,难以满足动态交互的需求。直到我发现了 ArkTS 中的 ​​RowSplit​​​ 组件,它就像一把钥匙,为我打开了灵活横向布局的大门。通过使用 ​​RowSplit​​ 组件,我能够轻松地将子组件横向布局,并在它们之间插入纵向分割线,用户还可以通过拖动分割线来改变子组件的宽度,大大提升了用户体验。为了帮助更多开发者掌握这个实用的组件,我决定撰写这篇自学指南。

一、ArkTS 应用框架与 RowSplit 组件概述

在 ArkTS 的应用框架中,涵盖了众多功能模块和组件,如 ​​Ability Kit​​​(程序框架服务)、​​Accessibility Kit​​​(无障碍服务)、​​ArkData​​​(方舟数据管理)等。而 ​​RowSplit​​​ 组件属于 ​​ArkUI​​​(方舟 UI 框架)中的一部分,从 API Version 7 开始就被支持,从 API version 11 开始,其接口支持在元服务中使用,依赖的系统能力为 ​​SystemCapability.ArkUI.ArkUI.Full​​。

1.1 RowSplit 组件功能简介

​RowSplit​​​ 组件的主要功能是将子组件进行横向布局,并在每个子组件之间插入一根纵向的分割线。它通过分割线来限制子组件的宽度,初始化时,分割线的位置会根据子组件的宽度来计算。一旦初始化完成,后续动态修改子组件的宽度将不会生效,分割线的位置会保持不变,但用户可以通过拖动相邻的分割线来改变子组件的宽度。不过需要注意的是,在初始化后,如果动态修改 ​​margin​​​、​​border​​​、​​padding​​ 这些通用属性,导致子组件的宽度大于相邻分割线的间距,此时将不支持通过拖动分割线来改变子组件的宽度。

二、RowSplit 组件的接口与属性

2.1 接口

​RowSplit​​​ 组件的接口非常简单,仅需使用 ​​RowSplit()​​​ 即可创建一个 ​​RowSplit​​ 布局容器。示例代码如下:

RowSplit() {
    // 这里可以添加子组件
}

2.2 属性

​RowSplit​​​ 组件支持的主要属性是 ​​resizeable​​,用于设置分割线是否可拖拽。

2.2.1 ​​resizeable​​ 属性

  • 参数说明:该属性接受一个布尔类型的参数 ​​value​​​,表示分割线是否可拖拽,此参数为必填项,默认值为 ​​false​​。
  • 使用示例
RowSplit() {
    // 子组件
}
.resizeable(true) // 设置分割线可拖拽

2.3 通用属性

​RowSplit​​​ 组件还支持一些通用属性,如 ​​clip​​​、​​margin​​​ 等。其中,​​clip​​​ 属性在不设置时默认值为 ​​true​​。例如:

RowSplit() {
    // 子组件
}
.resizeable(true)
.margin({ top: 10, bottom: 10 }) // 设置上下外边距
.clip(false) // 关闭裁剪

三、RowSplit 组件的使用示例

3.1 基本用法示例

以下是一个基本的 ​​RowSplit​​ 组件使用示例,设置了可拖动的横向布局子组件:

// xxx.ets
@Entry
@Component
struct RowSplitExample {
    build() {
        Column() {
            Text('拖动分割线调整宽度').fontSize(12).fontColor(0x888888).width('90%')
            RowSplit() {
                Text('区域 1').width('15%').height(120).backgroundColor(0xFFE4B5).textAlign(TextAlign.Center)
                Text('区域 2').width('15%').height(120).backgroundColor(0xBC8F8F).textAlign(TextAlign.Center)
                Text('区域 3').width('15%').height(120).backgroundColor(0xFFE4B5).textAlign(TextAlign.Center)
                Text('区域 4').width('15%').height(120).backgroundColor(0xBC8F8F).textAlign(TextAlign.Center)
                Text('区域 5').width('15%').height(120).backgroundColor(0xFFE4B5).textAlign(TextAlign.Center)
            }
           .resizeable(true) // 可拖动
           .width('90%').height(120)
        }.width('100%').margin({ top: 15 })
    }
}

1743352497957.jpg

代码解释:

  • 首先创建了一个 ​​Column​​ 容器,用于垂直排列内容。
  • 在 ​​Column​​​ 中添加了一个 ​​Text​​ 组件,用于提示用户可以拖动分割线调整宽度。
  • 接着创建了一个 ​​RowSplit​​​ 组件,在其中添加了 5 个 ​​Text​​ 子组件,每个子组件设置了不同的背景颜色,方便区分。
  • 通过 ​​resizeable(true)​​ 方法将分割线设置为可拖拽状态。
  • 最后设置了 ​​RowSplit​​​ 组件的宽度和高度,以及 ​​Column​​ 组件的外边距。

3.2 更多样式和交互示例

我们可以进一步扩展上述示例,添加更多的样式和交互效果。例如,为子组件添加边框、改变字体颜色等:

// xxx.ets
@Entry
@Component
struct EnhancedRowSplitExample {
    build() {
        Column() {
            Text('灵活调整区域宽度').fontSize(14).fontColor(0x666666).width('90%')
            RowSplit() {
                Text('模块 A').width('20%').height(150)
                   .backgroundColor(0xFFDAB9)
                   .textAlign(TextAlign.Center)
                   .fontSize(16)
                   .fontColor(0x333333)
                   .border({ width: 2, color: 0x8B4513 })
                Text('模块 B').width('20%').height(150)
                   .backgroundColor(0xD2691E)
                   .textAlign(TextAlign.Center)
                   .fontSize(16)
                   .fontColor(0xFFFFFF)
                   .border({ width: 2, color: 0xFFE4C4 })
                Text('模块 C').width('20%').height(150)
                   .backgroundColor(0xFFDAB9)
                   .textAlign(TextAlign.Center)
                   .fontSize(16)
                   .fontColor(0x333333)
                   .border({ width: 2, color: 0x8B4513 })
                Text('模块 D').width('20%').height(150)
                   .backgroundColor(0xD2691E)
                   .textAlign(TextAlign.Center)
                   .fontSize(16)
                   .fontColor(0xFFFFFF)
                   .border({ width: 2, color: 0xFFE4C4 })
                Text('模块 E').width('20%').height(150)
                   .backgroundColor(0xFFDAB9)
                   .textAlign(TextAlign.Center)
                   .fontSize(16)
                   .fontColor(0x333333)
                   .border({ width: 2, color: 0x8B4513 })
            }
           .resizeable(true)
           .width('90%').height(150)
           .margin({ top: 20 })
           .clip(false)
        }.width('100%').margin({ top: 20 })
    }
}

1743352539168.jpg

代码解释:

  • 同样使用 ​​Column​​ 容器来垂直排列内容,添加提示文本。
  • 在 ​​RowSplit​​​ 组件中,为每个 ​​Text​​ 子组件添加了边框、调整了字体大小和颜色,使界面更加美观。
  • 再次设置 ​​resizeable(true)​​ 确保分割线可拖拽。
  • 增加了 ​​margin​​​ 和 ​​clip​​ 属性,进一步调整布局和裁剪效果。

四、总结与注意事项

4.1 总结

​RowSplit​​​ 组件为 ArkTS 开发者提供了一种简单而有效的方式来实现灵活的横向布局,用户可以通过拖动分割线来动态调整子组件的宽度,增强了界面的交互性和用户体验。通过合理运用 ​​RowSplit​​ 组件的接口和属性,结合通用属性的设置,开发者可以创建出各种复杂而美观的界面布局。

4.2 注意事项

  • 初始化后宽度修改:初始化后动态修改子组件的宽度不会影响分割线的位置,若需要调整宽度,应通过拖动分割线来实现。
  • 通用属性影响:初始化后,动态修改 ​​margin​​​、​​border​​​、​​padding​​ 等通用属性,导致子组件宽度大于相邻分割线间距时,将无法通过拖动分割线改变子组件宽度。
  • 最大最小宽度限制:子组件可改变宽度的范围取决于其最大最小宽度,在设计时需要合理设置这些属性。

最后如果这篇文章对你有帮助,希望您能关注,点赞,加收藏哦~~~~

目录
相关文章
|
17天前
|
容器
45.[HarmonyOS NEXT RelativeContainer案例二] 精确控制组件间距:外边距在相对布局中的高级应用
在HarmonyOS NEXT的UI开发中,组件之间的间距控制对于创建美观、易用的界面至关重要。RelativeContainer不仅提供了强大的锚点定位系统,还可以结合外边距(margin)属性实现更精细的布局控制。本教程将详细讲解如何在RelativeContainer中巧妙运用外边距,帮助你掌握这一实用技巧。
68 29
|
17天前
|
开发者 容器
44.[HarmonyOS NEXT RelativeContainer案例一] 掌握组件锚点布局:打造灵活精准的UI定位系统
在HarmonyOS NEXT的UI开发中,精确控制组件位置是构建复杂界面的关键。RelativeContainer作为一种强大的布局容器,通过锚点系统提供了精确定位能力,使开发者能够创建出灵活且精准的UI布局。本教程将详细讲解如何使用RelativeContainer的锚点布局功能,帮助你掌握这一核心技术。
37 4
|
17天前
|
UED 容器
43.[HarmonyOS NEXT Row案例十一] 构建智能分页控件:Row组件实现页码与翻页按钮的完美结合
分页控件是数据展示类应用中不可或缺的导航元素,它允许用户在大量数据中进行有序浏览。本教程将详细讲解如何使用HarmonyOS NEXT的Row组件创建一个功能完善的分页控件,实现页码显示与前后翻页按钮的完美结合。 分页控件在各类应用场景中广泛应用,如电子商城的商品列表、新闻应用的文章列表、图库应用的图片浏览等。通过合理的设计和交互,可以提升用户的浏览体验和数据访问效率。
33 3
|
17天前
|
数据库 开发者 UED
37.[HarmonyOS NEXT Row案例五] 构建智能聊天气泡:Row组件的reverse属性妙用
在即时通讯应用中,聊天气泡是一个核心UI元素,它需要能够区分发送方和接收方的消息,并以不同的样式和位置显示。本教程将详细讲解如何使用HarmonyOS NEXT的Row组件创建反向排列的消息气泡,重点介绍reverse属性的巧妙应用,帮助开发者构建出专业、美观的聊天界面。
38 3
|
14天前
|
JavaScript 前端开发 UED
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发四
本文介绍了Web组件开发与性能优化的相关内容。在Web组件开发部分,涵盖创建组件、设置样式与属性、添加事件和方法以及场景示例,如动态播放视频。性能提升方面,推荐使用数据懒加载、条件渲染替代显隐控制、Column/Row替代Flex、设置List组件宽高及调整cachedCount减少滑动白块等方法,以优化应用性能与用户体验。
41 1
|
17天前
|
开发者 UED 容器
33.[HarmonyOS NEXT Row案例一(下)] 深入理解Row组件与按钮组布局技巧
在上一篇教程中,我们介绍了如何使用Row组件创建水平排列的功能按钮组,并讲解了基础间距与对齐的设置方法。本篇教程将深入探讨Row组件的高级特性、布局技巧以及在实际应用中的最佳实践,帮助开发者更好地掌握HarmonyOS NEXT的水平布局能力。
32 1
|
14天前
|
编解码 UED 开发者
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发之常见布局
本文主要介绍了自适应布局与响应式布局的相关内容。自适应布局部分涵盖线性布局、层叠布局、弹性布局和网格布局,详细说明了各布局的特性及使用方法,例如线性布局中的排列、拉伸与缩放,弹性布局的方向、换行与对齐方式等。响应式布局则重点讲解了栅格系统和媒体查询,阐述如何通过栅格组件和媒体查询条件实现不同设备上的适配效果。这些技术帮助开发者灵活应对多尺寸屏幕的设计需求,提升用户体验。
49 0
|
21天前
|
开发框架 前端开发 JavaScript
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发一
本文介绍了方舟开发框架(ArkUI)及其两种开发范式:基于ArkTS的声明式开发范式和类Web开发范式。ArkUI是用于构建HarmonyOS应用界面的UI框架,提供极简UI语法和基础设施。声明式开发范式使用ArkTS语言,以组件、动画和状态管理为核心,适合复杂团队协作;类Web开发范式采用HML、CSS、JavaScript三段式开发,适用于简单界面应用,贴近Web开发者习惯。文中还概述了两者的架构和基础能力,帮助开发者选择合适的范式进行高效开发。
69 15
|
21天前
|
编解码 前端开发 Java
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发三
本文介绍了基于声明式UI范式的图形绘制与动画效果实现方法,涵盖绘制图形、添加动画效果及常见组件说明三部分内容。在绘制图形部分,详细讲解了如何通过Circle组件为食物成分表添加圆形标签,以及使用Path组件结合SVG命令绘制自定义图形(如应用Logo)。动画效果部分则展示了如何利用animateTo实现闪屏动画,包括渐出、放大效果,并设置页面跳转;同时介绍了页面间共享元素转场动画的实现方式。最后,文章列举了声明式开发范式中的各类组件及其功能,帮助开发者快速上手构建复杂交互页面。
64 11
|
17天前
|
UED 容器
5.HarmonyOS Next开发宝典:掌握Flex布局的艺术
Flex布局(弹性布局)是HarmonyOS Next中最强大的布局方式之一,它提供了一种更加高效、灵活的方式来对容器中的子元素进行排列、对齐和分配空间。无论是简单的居中显示,还是复杂的自适应界面,Flex布局都能轻松应对。
42 0

热门文章

最新文章