HarmonyOS 鸿蒙Next List的divider使用
HarmonyOS 鸿蒙Next List的divider使用#HarmonyOS最强问答官#
默认情况下,第一个listitem的上方和最后一个的下方是没有分割线的 在此基础上,我是否可以设置第一个的下方和第二个的下方也没有分割线吗
3 回复
想实现您想要的效果,只能使用自定义ListItem结合条件渲染,参考代码如下
[@Component](/user/Component)
struct ListDividePage {
@State message: string = 'Hello World';
scroller: Scroller = new Scroller();
@State dataSource: Array<ListItemModel> = new Array();
aboutToAppear(): void {
let index = 0;
while (index < 50) {
this.dataSource.push({ title: index.toString(), showLine: index % 2 === 0 });
index++;
}
}
build() {
Column() {
List({ scroller: this.scroller }) {
ForEach(this.dataSource, (item: ListItemModel) => {
ListItem() {
ListItemView({ item: item });
}
}, (item: ListItemModel) => item.title);
}
.scrollBar(BarState.Off)
.onScroll((scrollOffset: number, scrollState: ScrollState) => {
// Scroll event handling can be added here
});
}
.backgroundColor('#0D182431')
.width('100%')
.height('100%');
}
}
[@Component](/user/Component)
struct ListItemView {
item: ListItemModel = new ListItemModel();
build() {
Column() {
Text('item: ' + this.item.title)
.fontSize(16)
.fontColor(Color.Black)
.height(80)
.width('100%')
.textAlign(TextAlign.Center)
.backgroundColor(Color.White);
if (this.item.showLine) {
Divider().strokeWidth(1).color(Color.Red);
}
}
.width('100%')
.height(81)
.borderRadius(10)
.backgroundColor(Color.White)
.justifyContent(FlexAlign.SpaceBetween);
}
}
class ListItemModel {
constructor() {}
title: string = '';
showLine: boolean = false;
}
可以根据List->ForEach中的索引值控制divider是否可见和隐藏