在 OpenHarmony(ArkUI)开发中,列表组件(List / ListItem)显示空白是非常常见的问题,通常由以下几类原因导致。你可以对照排查:
List 默认不会自动撑开高度,如果父容器或 List 自身没有明确的宽高,就会“看起来是空白”。
✅ 正确写法:
List() {
ListItem() {
Text('Item 1')
}
}
.width('100%')
.height('100%')
❌ 错误示例(常见):
List() {
ListItem() {
Text('Item 1')
}
}
// 没有 width / height
ListItem() {
// 空内容
}
或:
Text('')
都会导致空白。
List() {
ForEach(this.listData, (item) => {
ListItem() {
Text(item)
}
})
}
如果 listData = [],列表就是空白的。
✅ 排查:
console.log(this.listData.length)
即使 List 有 height('100%'),但父容器是 Column() 且没高度,也会无效。
✅ 正确结构:
Column() {
List() {
ListItem() {
Text('Hello')
}
}
.width('100%')
.height('100%')
}
.width('100%')
.height('100%')
Text('内容')
.fontColor(Color.White)
.backgroundColor(Color.White)
视觉上“空白”。
错误示例:
ForEach(this.list, (item) => {
ListItem() {
Text(item)
}
})
✅ 推荐写法:
ForEach(
this.list,
(item) => {
ListItem() {
Text(item)
}
},
(item) => item.id.toString()
)
如果 listData 不是 @State 或 @Link:
@State listData: string[] = []
否则修改数据不会触发列表刷新。
List()
.backgroundColor(Color.Red)
ListItem()
.height(50)
@Entry
@Component
struct TestPage {
@State data: string[] = ['A', 'B', 'C']
build() {
Column() {
List() {
ForEach(this.data, (item: string) => {
ListItem() {
Text(item)
.fontSize(20)
}
})
}
.width('100%')
.height('100%')
}
.width('100%')
.height('100%')
}
}
如果你愿意,可以把你的 List 代码贴出来,我可以直接帮你定位是哪一条原因。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。