鸿蒙开发学习笔记——列表布局List

用上一节的ForEach展示数据,当数据过大时,超出屏幕的数据被隐藏起来且不支持滚动,用List可以解决这一问题。

列表(List)是一种复杂容器,具备下列特点:

1.列表项(ListItem)数量过多超出屏幕后,会自动提供滚动功能

2.列表项(ListItem)既可以纵向排列,也可以横向排列

一、定义

一般定义如下:

    // 列表项间距
    List({space: 10}){
      ForEach([1,2,3,4], item => {
        ListItem(){
          // 列表项内容,只能包含一个根组件
          Text('ListItem')
        }
      })
    }
    .width('100%')
    .listDirection(Axis.Vertical) // 列表方向,默认纵向(垂直)Vertical 如果要横向则使用Horizontal

二、实例

当商品多了能拖动展示,代码如下:

// 定义商品类
class Item{
  name: string
  image: ResourceStr
  price: number
  discount: number

  // discount初始化为0
  constructor(name: string, image: ResourceStr, price: number, discount: number = 0) {
    this.name = name
    this.image = image
    this.price = price
    this.discount = discount
  }
}

@Entry
@Component
struct Index {
  private items: Array<Item> = [
    new Item('Pocket系列',$r('app.media.Pocket'),7499,500),
    new Item('Mate系列',$r('app.media.Mate'),6499),
    new Item('P系列',$r('app.media.P'),6988),
    new Item('nova系列',$r('app.media.nova'),4699),
    new Item('畅想系列',$r('app.media.nav'),1499),
    new Item('畅想系列',$r('app.media.nav'),1499)
  ]

  build() {
    Column({space: 8}){
      Row(){
        Text('商品列表')
          .fontSize(30)
          .fontWeight(FontWeight.Bold)
      }
      .width('100%')
      .height(30)
      .margin({bottom: 20})

      // 定义列表
      List({space: 8}){
        ForEach(
          this.items,
          // 也可以写成item => {},但因为传进来的item类型为any,所以没有提示,声明变量类型后就有提示了
          (item: Item) => {
            ListItem(){
              Row({space: 10}){
                Image(item.image)
                  .width(100)
                Column({space: 4}){
                  // 如果有折扣 渲染只有这里有变化
                  if (item.discount) {
                    Text(item.name)
                      .fontSize(20)
                      .fontWeight(FontWeight.Bold)
                    Text('原价:¥'+item.price)
                      .fontColor('#CCC')
                      .fontSize(14)
                      .decoration({type: TextDecorationType.LineThrough})
                    Text('折扣价:¥'+(item.price - item.discount))
                      .fontColor('#F36')
                      .fontSize(18)
                    Text('补贴:¥'+item.discount)
                      .fontColor('#F36')
                      .fontSize(18)
                  }else{
                    Text(item.name)
                      .fontSize(20)
                      .fontWeight(FontWeight.Bold)
                    Text('¥'+item.price)
                      .fontColor('#F36')
                      .fontSize(18)
                  }
                }
                .height('100%')
                .alignItems(HorizontalAlign.Start)
              }
              .width('100%')
              .backgroundColor('#FFF')
              .borderRadius(20)
              .height(120)
              .padding(10)
            }
          }
        )

      }
      .width('100%')
      .layoutWeight(1)  // 权重配比

    }
    .width('100%')
    .height('100%')
  }
}

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
cda备考学习学习笔记——基础知识篇(二)主要涉及了计算机科学与技术领域的基本概念和知识。 首先,它介绍了计算机网络的基础知识。网络是将多台计算机通过通信链路连接起来,使它们能够相互通信和共享资源的系统。笔记中详细介绍了网络的组成、拓扑结构和通信协议等重要内容。 其次,笔记还解释了计算机系统的基本组成。计算机系统由硬件和软件两部分组成,其中硬件包括中央处理器、存储器、输入输出设备等,而软件则分为系统软件和应用软件。笔记详细介绍了各种硬件和软件的功能和作用。 此外,笔记还对数据库管理系统进行了介绍。数据库管理系统是一种用于管理和组织数据的软件系统,它能够实现数据的存储、检索和更新等操作。笔记中详细介绍了数据库的概念、结构和操作等内容。 最后,笔记还包括了算法和数据结构的基础知识。算法是解决问题的一系列步骤和规则,而数据结构则是组织和存储数据的方式。笔记中介绍了常用的算法和数据结构,如排序算法、树和图等。 总之,通过学习CDA备考学习笔记中的基础知识篇(二),我们能够更好地理解计算机网络、计算机系统、数据库管理系统以及算法和数据结构等相关概念和知识。这些基础知识对于我们深入研究计算机科学与技术领域是非常重要的,也为我们日后的学习和工作奠定了坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值