HarmonyOS NEXT - 列表布局(List)

简介: 列表(List)是一种用于展示结构化、可滚动信息的复杂容器,适用于同类数据集合的呈现(如通讯录、音乐列表等)。通过垂直或水平排列子组件`ListItem`或`ListItemGroup`,可实现单个视图或多视图组合。支持条件渲染、循环渲染和懒加载等优化方式。- **分隔线**:通过`divider`属性添加分隔线,并自定义粗细、颜色及边距。- **滚动条**:使用`scrollBar`属性控制滚动条显示,支持按需显示(`BarState.Auto`)。- **代码示例**:包含静态列表项、分组头布局、循环渲染及分隔线配置。

列表是一种复杂的容器,当列表项达到一定数量,内容超过屏幕大小时,可以自动提供滚动功能。它适合用于呈现同类数据类型或数据类型集,例如图片和文本。在列表中显示数据集合是许多应用程序中的常见要求(如通讯录、音乐列表、购物清单等)。

使用列表可以轻松高效地显示结构化、可滚动的信息。通过在List组件中按垂直或者水平方向线性排列子组件ListItemGroup或ListItem,为列表中的行或列提供单个视图,或使用循环渲染迭代一组行或列,或混合任意数量的单个视图和ForEach结构,构建一个列表。List组件支持使用条件渲染、循环渲染、懒加载等渲染控制方式生成子组件。

接口

List(value?:{
   space?: number | string, initialIndex?: number, scroller?: Scroller})

List包含ListItem、ListItemGroup子组件。
List的子组件必须是ListItemGroup或ListItem,ListItem和ListItemGroup必须配合List来使用。

通过ForEach循环渲染列表数据
代码实例

@Entry
@Component
struct ListPage {
   
  @State message: string = '第2节 列表布局(List)';

  cities:Array<string>=[
    '北京市','上海市','广州市','杭州市','东莞市'
  ]

  @Builder
  groupHeader(text: string) {
   
    Text(text)
      .fontWeight(FontWeight.Bold)
      .backgroundColor(Color.Orange)
      .width('100%')
      .padding(4)
      .textAlign(TextAlign.Center)
  }

  build() {
   
    Column() {
   
      Text(this.message)
        .fontSize(30)
        .fontWeight(FontWeight.Bold)

      List() {
   
        ListItem() {
   
          Text('北京')
        }

        ListItem() {
   
          Text('上海')
        }

        ListItem() {
   
          Text('广州')
        }

        ListItemGroup({
    header: this.groupHeader('一线城市')}){
   
          ListItem() {
   
            Text('北京')
          }

          ListItem() {
   
            Text('上海')
          }

          ListItem() {
   
            Text('广州')
          }
        }

        ListItemGroup({
   header:this.groupHeader('循环遍历')}){
   
          ForEach(this.cities,(item:string)=>{
   
            ListItem(){
   
              Text(item)
            }
          })
        }
      }
      .backgroundColor('#EEEEEE')
      .alignListItem(ListItemAlign.Center)
    }
    .height('100%')
    .width('100%')
  }
}

添加分隔线

  • List提供了divider属性用于给列表项之间添加分隔线。在设置divider属性时,可以通过strokeWidth和color属性设置分隔线的粗细和颜色。
  • startMargin和endMargin属性分别用于设置分隔线距离列表侧边起始端的距离和距离列表侧边结束端的距离。
    代码实例
class DividerTmp {
   
  strokeWidth: Length = 1
  startMargin: Length = 60
  endMargin: Length = 10
  color: ResourceColor = '#ffe9f0f0'

  constructor(strokeWidth: Length, startMargin: Length, endMargin: Length, color: ResourceColor) {
   
    this.strokeWidth = strokeWidth
    this.startMargin = startMargin
    this.endMargin = endMargin
    this.color = color
  }
}
@Entry
@Component
struct EgDivider {
   
  @State egDivider: DividerTmp = new DividerTmp(1, 60, 10, '#ffe9f0f0')
  build() {
   
    List() {
   
      // ...
    }
    .divider(this.egDivider)
  }
}

滚动条
在使用List组件时,可通过scrollBar属性控制列表滚动条的显示。scrollBar的取值类型为BarState,当取值为BarState.Auto表示按需显示滚动条。此时,当触摸到滚动条区域时显示控件,可上下拖拽滚动条快速浏览内容,拖拽时会变粗。若不进行任何操作,2秒后滚动条自动消失。

List() {
   
  // ...
}
.scrollBar(BarState.Auto)
目录
相关文章
|
13天前
|
人工智能 自然语言处理 开发者
HarmonyOS NEXT~鸿蒙开发利器:CodeGenie AI辅助编程工具全面解析
鸿蒙开发迎来新利器!DevEco CodeGenie 是华为推出的 AI 辅助编程工具,专为 HarmonyOS NEXT 开发者设计。它具备智能代码生成(支持 ArkTS 和 C++)、精准知识问答以及万能卡片生成三大核心功能,大幅提升编码效率。通过与 DeepSeek 深度整合,CodeGenie 实现流畅的问答体验,帮助开发者解决技术难题。无论是新手还是资深开发者,都能从中受益,享受更智能高效的开发过程。快来体验吧!
66 5
|
14天前
|
存储 人工智能 测试技术
HarmonyOS Next~HarmonyOS应用测试全流程解析:从一级类目上架到二级类目专项测试
本文深入解析HarmonyOS应用测试全流程,涵盖从一级类目通用测试到二级类目专项测试的技术方案。针对兼容性、性能、安全测试及分布式能力验证等关键环节,提供详细实践指导与代码示例。同时,结合典型案例分析常见问题及优化策略,帮助开发者满足华为严苛的质量标准,顺利上架应用。文章强调测试在开发中的核心地位,助力打造高品质HarmonyOS应用。
40 2
|
6天前
|
人工智能 自然语言处理 安全
HarmonyOS NEXT+AI打造智能助手APP(适配DeepSeek)
华为仓颉编程语言与HarmonyOS NEXT结合AI大模型,开创智能助手APP开发新纪元。仓颉语言以自然化编程降低门槛,HarmonyOS NEXT提供流畅安全的系统支持,AI大模型赋予助手强大交互能力。实战课程覆盖智能对话、写作、画图等6大核心业务,模块化开发助你掌握全流程技能。参考资料及开源教程助力学习,开启智能应用开发新篇章。
49 10
HarmonyOS NEXT+AI打造智能助手APP(适配DeepSeek)
|
12天前
|
人工智能 JavaScript 安全
【HarmonyOS NEXT+AI】问答05:ArkTS和仓颉编程语言怎么选?
本文针对学员关于“鸿蒙主推开发语言是ArkTS,为何课程使用仓颉语言”的疑问进行解答。文章回顾了鸿蒙编程语言的发展历程:从早期支持JS和C/C++,到HarmonyOS 2引入Java,再到HarmonyOS 3推出ArkTS,直至HarmonyOS 5(NEXT)引入仓颉语言。仓颉作为华为自研的现代编程语言,具备高效编程、安全可靠、轻松并发和卓越性能等特性,适用于高性能高并发场景及未来AI原生应用开发。文章还探讨了仓颉与ArkTS的关系、应用场景以及是否需要重写现有应用等问题,为开发者选择编程语言提供了参考依据。
75 13
【HarmonyOS NEXT+AI】问答05:ArkTS和仓颉编程语言怎么选?
|
12天前
|
人工智能 监控 Java
一文搞清楚HarmonyOS NEXT中状态管理 V1 版本:父子组件数据传递装饰器的奇妙之旅
本文深入浅出地介绍了HarmonyOS NEXT开发中状态管理V1版本的两个核心装饰器:@Prop和@Link。@Prop如同单向传递的快递员,负责将数据从父组件传递到子组件,但子组件的修改不会影响父组件;@Link则像心灵感应的双胞胎,实现父组件与子组件间的数据双向同步。通过魔法按钮和能量水晶的生动示例,文章详细解析了两者的使用场景、参数特性及同步机制,并以浅拷贝和深拷贝为比喻,帮助开发者更好地理解数据传递中的细节。掌握这两位“信使”,能让组件间的协作更加高效可靠!
60 14
一文搞清楚HarmonyOS NEXT中状态管理 V1 版本:父子组件数据传递装饰器的奇妙之旅
|
2天前
|
前端开发 开发工具 Android开发
小红书APP的全新鸿蒙NEXT端性能优化技术实践
从 2023 年开始,鸿蒙的优势愈发明显,已经成为可与 iOS、安卓媲美的第三大移动操作系统。从一些抖音视频中也可以看出,鸿蒙在流畅性方面甚至在某些层面上超过了 iOS。本次分享的主题是小红书在鸿蒙平台上的工程实践,主要聚焦于性能优化和探索。
32 10
|
6天前
|
网络协议 Java 网络安全
全平台开源即时通讯IM聊天框架MobileIMSDK的服务端开发指南,支持鸿蒙NEXT
全平台开源即时通讯IM聊天框架MobileIMSDK的服务端开发指南,支持鸿蒙NEXT
49 4
|
8天前
|
JSON 缓存 程序员
玩转HarmonyOS NEXT网络请求:从新手到高手的实战秘籍
本文以通俗易懂的方式讲解了HarmonyOS网络请求的核心知识,从基础概念到实战技巧,再到进阶优化,帮助开发者快速上手。通过“点外卖”的类比,形象解释了HTTP请求方法(如GET、POST)和JSON数据格式的作用。同时,提供了封装工具类的示例代码,简化重复操作,并分享了常见问题的解决方法(如权限配置、参数格式、内存泄漏等)。最后,还探讨了如何通过拦截器、缓存机制和重试机制提升请求功能。无论你是新手还是进阶开发者,都能从中受益,快动手实现一个新闻App试试吧!
33 5
|
2天前
|
编解码 Java 开发工具
【HarmonyOS Next之旅】DevEco Studio的安装与环境配置
本教程详细介绍了使用DevEco Studio进行OpenHarmony开发的全流程,包括下载与安装、环境配置、项目准备及实用技巧。首先,以Windows环境为例,说明了DevEco Studio的运行要求、下载和安装步骤;接着,通过设置环境变量和配置SDK完成开发环境搭建;然后,讲解了项目创建、预览器和虚拟机的使用方法;最后,分享了中文插件安装和简化工程目录栏等小技巧,帮助开发者高效上手OpenHarmony开发。
51 0
|
2天前
|
存储 安全 JavaScript
【HarmonyOS Next之旅】HarmonyOS概述(二)
HarmonyOS是面向万物互联时代的分布式操作系统,支持多种终端设备,提供全场景业务能力。其三大特征包括超级终端融合、一次开发多端部署及统一OS弹性部署。技术架构分为内核层、系统服务层、框架层和应用层,确保系统灵活性与高效性。同时,HarmonyOS通过分布式多端协同身份认证、可信运行环境和数据全生命周期保护,保障系统安全,实现“正确的人、正确的设备、正确地使用数据”。
25 0

热门文章

最新文章