HarmonyOS 鸿蒙Next List嵌套List和List嵌套Grid

发布于 1周前 作者 sinazl 最后一次编辑是 5天前 来自 鸿蒙OS

1.第一层使用List的LazyForEach嵌套第二层的List可以正常显示; 2.但我将第二层的List换成Grid便不能显示内容 3.当我使用第二层List的lanes属性来完成我多列的需要时,顶部会多出一大段空白区域

//部分代码如下,GroupResourceComponent的外层是一个Tabs的TabContent

@Component
struct GroupResourceComponent {
  @Link dataSource: GalleryDataSource

  build() {
    List({ space: CommonConstants.MARGIN_12_PX }) {
      LazyForEach(this.dataSource, (resources: SystemGalleryGroup) => {
        ListItem() {
          Column() {
            SelectBarComponent({
              time: resources.date, onChangeSelect: (isSelect: boolean) => {
              }
            })
            Blank().height(CommonConstants.MARGIN_12_PX)
            AlbumResourceComponent({ resources: resources.resources })
          }
          .width(CommonConstants.FULL_SIZE)
        }
      }, (item: SystemGalleryModel) => `${item.resourceName}${new Date().getTime()}`)
    }
    .width(CommonConstants.FULL_SIZE)
  }
}

@Component
struct AlbumResourceComponent {
  @ObjectLink resources: SystemGalleryArray

  build() {
    Column() {
      List({ space: CommonConstants.MARGIN_16_PX }) {
        ForEach(this.resources, (item: SystemGalleryModel) => {
          ListItem() {
            ResourceItemComponent({ item: item })
          }
        }, (item: SystemGalleryModel) => `${item.cover.toString()}`)
      }
      .width(CommonConstants.FULL_SIZE)
      .lanes(3)
      .alignListItem(ListItemAlign.Start)

      // Grid() {
      // ForEach(this.resources, (item: SystemGalleryModel, index)=>{
      // GridItem(){
      // ResourceItemComponent({item: this.resources[index]})
      // }
      // })
      // }
      // .width(CommonConstants.FULL_SIZE)
      // .columnsTemplate('1fr 1fr 1fr')
      // .columnsGap(CommonConstants.MARGIN_16_PX)
      // .rowsGap(CommonConstants.MARGIN_32_PX)
    }
    .width(CommonConstants.FULL_SIZE)
  }
}

更多关于HarmonyOS 鸿蒙Next List嵌套List和List嵌套Grid的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
List嵌套Grid时,

1.不设置rowsTemplate/columnsTemplate的时候,默认是能根据内容撑开的,Grid不需要指定宽高。

2.设置了rowsTemplate/columnsTemplate任意一个和都设置,默认跟父组件同宽高,Grid就需要指定宽高。

这边设置了 .columnsTemplate('1fr 1fr 1fr'),所以需要给Grid一个高度。

或者可以把columnsTemplate去掉,给GridItem里面的界面设置宽度高度。

更多关于HarmonyOS 鸿蒙Next List嵌套List和List嵌套Grid的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,处理Next List嵌套List和List嵌套Grid的布局,可以通过以下方式实现:

  1. Next List嵌套List

    • 使用ListContainer组件作为外层容器,并设置其数据源。
    • 在每个列表项中,嵌套另一个ListContainer作为子列表,并为其设置独立的数据源。
    • 通过数据绑定和事件处理,实现外层列表和子列表的交互,如点击外层列表项时展开或收起子列表。
  2. List嵌套Grid

    • 同样使用ListContainer作为外层列表容器。
    • 在每个列表项中,嵌套一个GridContainer组件。
    • GridContainer设置列数和数据源,以展示网格布局的子项。
    • 可以通过调整数据源和布局参数,控制网格中项目的排列和显示。

在鸿蒙系统的开发环境中,这些组件的使用和布局设置都可以通过XML布局文件或JavaScript代码实现。确保在开发过程中,正确配置组件的属性,如数据源、事件监听器等,以实现所需的嵌套布局效果。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部