在 OpenHarmony(ArkUI) 中,列表组件主要通过 List + ListItem 来实现,也可以用 Grid 做网格布局。下面从基础布局、常用属性、常见布局方式几个方面说明。
List() {
ListItem() {
Text('Item 1')
}
ListItem() {
Text('Item 2')
}
ListItem() {
Text('Item 3')
}
}
✅ 默认方向:Axis.Vertical
List() {
ListItem() {
Text('A')
}
ListItem() {
Text('B')
}
}
.listDirection(Axis.Horizontal)
List() {
// ListItem...
}
.listDirection(Axis.Vertical) // 列表方向
.alignListItem(ListItemAlign.Center) // 子项对齐
.scrollBar(BarState.Auto) // 滚动条
.edgeEffect(EdgeEffect.Spring) // 边缘效果
.width('100%')
.height('100%')
ListItem 本身只是一个容器,内部布局靠 Flex / Column / Row
ListItem() {
Row() {
Image($r('app.media.icon'))
.width(40)
.height(40)
Text('标题')
.margin({ left: 12 })
}
.width('100%')
.padding(12)
}
ListItem() {
Column() {
Text('标题').fontSize(16)
Text('描述信息').fontSize(12).fontColor('#999')
}
.alignItems(HorizontalAlign.Start)
.padding(12)
}
如果是多列布局,推荐用 Grid:
Grid() {
ForEach([1,2,3,4,5,6], (item) => {
GridItem() {
Text('Item ' + item)
}
})
}
.columnsTemplate('1fr 1fr')
.rowsTemplate('1fr 1fr 1fr')
List() {
ListItem() {
Row() {
Text('Wi-Fi')
Blank()
Toggle({ type: ToggleType.Switch, isOn: true })
}
.padding(16)
}
}
List() {
ListItem() {
Column() {
Text('标题')
Text('内容')
}
.padding(16)
.backgroundColor('#FFF')
.borderRadius(12)
.margin(8)
}
}
ForEach 渲染列表LazyForEachList() {
ForEach(this.data, (item) => {
ListItem() {
Text(item)
}
})
}
如果你有具体需求(比如:聊天列表、商品列表、左滑删除、瀑布流),可以告诉我,我可以直接给你完整示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。