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('京东生鲜')