【鸿蒙应用实战开发】List列表进阶布局教程

1. 列表 List

列表是一种复杂的容器,当列表项达到一定数量,超过List容器组件大小时,可以自动提供滚动功能。它适合用于呈现同类数据类型或数据类型集,例如图片和文本。在列表中显示数据集合是许多应用程序中的常见要求(如通讯录、音乐列表、购物清单等)。
使用列表可以轻松高效地显示结构化、可滚动的信息。通过在 list 组件中按垂直或者水平方向线性排列子组件。
列表作为一种容器,会自动按其滚动方向排列子组件,向列表中添加组件或从列表中移除组件会重新排列子组件。
垂直滚动列表
在这里插入图片描述

水平滚动列表
在这里插入图片描述

List表示列表容器,ListItem表示单个列表项,可以包含单个子组件。

1.1. 基本使用

1.1.1. 组件

List() {

  listItem() {}

.....

}

1.1.2.示例代码

1.2. 开发布局

1.2.1. 设置主轴方向

List组件主轴默认是垂直方向,即默认情况下不需要手动设置List方向,就可以构建一个垂直滚动列表。若是水平滚动列表场景,将 List 的 listDirection 属性设置为 Axis.Horizontal 即可实现。listDirection 默认为 Axis.Vertical,即主轴默认是垂直方向。
属性:listDirection()

参数:枚举 Axis

●Vertical:垂直方向,默认值

●Horizontal:水平方向

List() {

  listItem()

  ......

}


    .listDirection(Axis.Horizontal)

1.2.2. 设置交叉轴布局

1.2.2.1. 列模式

属性:lanes()

参数:

●参数1: 交叉轴方向列数

●参数2: 交叉轴方向列间距

List() {

  listItem()

  ......

}

    // 参数1:交叉轴方向列数

    // 参数2: 交叉轴方向列间距

  .lanes(3, 10)

1.2.2.2. 列对齐方式

List交叉轴方向宽度大于ListItem交叉轴宽度列数时,ListItem在List交叉轴方向的布局方式,默认为首部对齐。
属性:alignListItem()

参数:枚举 ListItemAlign

●Start:首部对齐(默认)

●Center:居中对齐

●End:尾部对齐

List() {

  listItem()

  ......

}

    .alignListItem(ListItemAlign.Center)****

1.3. 自定义列表样式

1.3.1. 滚动条状态

属性:scrollBar()

参数:枚举 BarState

● Off: 不显示

● On:常驻显示

● Auto:按需显示(触摸时显示,2s 后消失)

List() {

  listItem()

  ......

}

    .scrollBar(BarState.Off)****

1.3.2. 分割线样式

列表默认没有分割线
属性:divider()

参数:{ strokeWidth: 数字, color?: ‘color’, startMargin?: 数字, endMargin?: 数字 }

List() {

  listItem()

  ......

}

    .divider({

    .strokeWidth: 1,

    .color: Color.Orange,

    .startMargin: 10,

    .endMargin: 10

  })

2. 综合案例-频道列表

示例图
在这里插入图片描述

代码如下

@Entry

@Component

struct Index {

  build() {

    Column() {

      List() {

        ListItem() {

          Column({ space: 5}) {

            Image('/images/chaoshi.png')

              .height(25)

            Text('京东超市')

              .fontSize(14).fontColor('#727070')

          }

        }

          .width('20%')

 

        ListItem() {

          Column({ space: 5}) {

            Image('/images/fushi.png')

              .height(25)

            Text('美妆服饰')

              .fontSize(14).fontColor('#727070')

          }

        }

        .width('20%')

 

        ListItem() {

          Column({ space: 5}) {

            Image('/images/shengxian.png')

              .height(25)

            Text('京东生鲜')

              
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值