美文网首页
鸿蒙~ArkUI list 第二篇 ---列表项侧滑、列表项

鸿蒙~ArkUI list 第二篇 ---列表项侧滑、列表项

作者: 胡修波 | 来源:发表于2023-12-25 08:33 被阅读0次

    一、列表测滑

    listItem的swipeAction属性可用于实现列表项的左右滑动功能。swipeAction属性方法初始化时有必填参数SwipeActionOptions,其中,start参数表示设置列表项右滑时起始端滑出的组件,end参数表示设置列表项左滑时尾端滑出的组件。

    @Entry
    @Component
    struct Index {
      @State itemIndexArr:number[] = [1,2]
      
      @Builder itemEnd(index:number) {
        Row () {
          Image($r("app.media.app_icon"))
            .width(32)
            .height(32)
            .margin(4)
            .onClick(()=>{
              console.info('Click Setting Icon')
            })
          Image($r("app.media.app_icon"))
            .width(32)
            .height(32)
            .margin(4)
            .onClick(()=>{
              this.itemIndexArr.splice(index,1)
            })
        }.padding(4).justifyContent(FlexAlign.SpaceEvenly)
      }
    
      build() {
        Column() {
          List({space:10}) {
            ForEach(this.itemIndexArr,(item,index) =>{
              ListItem(){
                Text('' + item)
                  .width('100%')
                  .height(100)
                  .fontSize(16)
                  .margin({ top: 10 })
                  .borderRadius(16)
                  .textAlign(TextAlign.Center)
                  .backgroundColor(Color.White)
              }.swipeAction({ start:this.itemEnd.bind(this,index), edgeEffect: SwipeEdgeEffect.Spring})
            },item=>item)
          }
    
          Row() {
            Image($r("app.media.app_icon"))
              .width(40)
              .height(40)
              .margin(4)
              .onClick(()=>{
                this.itemIndexArr.push(this.itemIndexArr.length + 1)
              })
          }
    
        }
        .padding(10)
        .backgroundColor(0xDCDCDC)
        .width('100%')
        .height('100%')
      }
    }
    
    1687593659-cK6608Y7.gif

    二、列表项添加标记

    添加标记是一种无干扰性且直观的方法,用于显示通知或将注意力集中到应用内的某个区域。例如,当消息列表接收到新消息时,通常对应的联系人头像的右上方会出现标记,提示有若干条未读消息

    • 不仅List可以添加标记,任何组件都可以添加
    // xxx.ets
    @Entry
    @Component
    struct BadgeExample {
      @Builder TabBuilder(index: number) {
        Column() {
          if (index === 2) {
            Badge({
              value: '',
              style: { badgeSize: 6, badgeColor: '#FA2A2D' }
            }) {
              Image('/common/public_icon_off.svg')
                .width(24)
                .height(24)
            }
            .width(24)
            .height(24)
            .margin({ bottom: 4 })
          } else {
            Image('/common/public_icon_off.svg')
              .width(24)
              .height(24)
              .margin({ bottom: 4 })
          }
          Text('Tab')
            .fontColor('#182431')
            .fontSize(10)
            .fontWeight(500)
            .lineHeight(14)
        }.width('100%').height('100%').justifyContent(FlexAlign.Center)
      }
    
      @Builder itemBuilder(value: string) {
        Row() {
          Image('common/public_icon.svg').width(32).height(32).opacity(0.6)
          Text(value)
            .width(177)
            .height(21)
            .margin({ left: 15, right: 76 })
            .textAlign(TextAlign.Start)
            .fontColor('#182431')
            .fontWeight(500)
            .fontSize(16)
            .opacity(0.9)
          Image('common/public_icon_arrow_right.svg').width(12).height(24).opacity(0.6)
        }.width('100%').padding({ left: 12, right: 12 }).height(56)
      }
    
      build() {
        Column() {
          Text('dotsBadge').fontSize(18).fontColor('#182431').fontWeight(500).margin(24)
          Tabs() {
            TabContent()
              .tabBar(this.TabBuilder(0))
            TabContent()
              .tabBar(this.TabBuilder(1))
            TabContent()
              .tabBar(this.TabBuilder(2))
            TabContent()
              .tabBar(this.TabBuilder(3))
          }
          .width(360)
          .height(56)
          .backgroundColor('#F1F3F5')
    
          Column() {
            Text('stringBadge').fontSize(18).fontColor('#182431').fontWeight(500).margin(24)
            List({ space: 12 }) {
              ListItem() {
                Text('list1').fontSize(14).fontColor('#182431').margin({ left: 12 })
              }
              .width('100%')
              .height(56)
              .backgroundColor('#FFFFFF')
              .borderRadius(24)
              .align(Alignment.Start)
    
              ListItem() {
                Badge({
                  value: 'New',
                  position: BadgePosition.Right,
                  style: { badgeSize: 16, badgeColor: '#FA2A2D' }
                }) {
                  Text('list2').width(27).height(19).fontSize(14).fontColor('#182431')
                }.width(49.5).height(19)
                .margin({ left: 12 })
              }
              .width('100%')
              .height(56)
              .backgroundColor('#FFFFFF')
              .borderRadius(24)
              .align(Alignment.Start)
            }.width(336)
    
            Text('numberBadge').fontSize(18).fontColor('#182431').fontWeight(500).margin(24)
            List() {
              ListItem() {
                this.itemBuilder('list1')
              }
    
              ListItem() {
                Row() {
                  Image('common/public_icon.svg').width(32).height(32).opacity(0.6)
                  Badge({
                    count: 1,
                    position: BadgePosition.Right,
                    style: { badgeSize: 16, badgeColor: '#FA2A2D' }
                  }) {
                    Text('list2')
                      .width(177)
                      .height(21)
                      .textAlign(TextAlign.Start)
                      .fontColor('#182431')
                      .fontWeight(500)
                      .fontSize(16)
                      .opacity(0.9)
                  }.width(240).height(21).margin({ left: 15, right: 11 })
    
                  Image('common/public_icon_arrow_right.svg').width(12).height(24).opacity(0.6)
                }.width('100%').padding({ left: 12, right: 12 }).height(56)
              }
    
              ListItem() {
                this.itemBuilder('list3')
              }
    
              ListItem() {
                this.itemBuilder('list4')
              }
            }
            .width(336)
            .height(232)
            .backgroundColor('#FFFFFF')
            .borderRadius(24)
            .padding({ top: 4, bottom: 4 })
            .divider({ strokeWidth: 0.5, color: 'rgba(0,0,0,0.1)', startMargin: 60, endMargin: 12 })
          }.width('100%').backgroundColor('#F1F3F5').padding({ bottom: 12 })
        }.width('100%')
      }
    }
    
    0000000000011111111.20231116092655.46979550724369049363981737101540.png
    • demo 2
    @Entry
    @Component
    struct Main {
      @State nu:number = 10
      build() {
    
        Row() {
          Badge({
            value: this.nu.toString(),
            position: BadgePosition.RightTop,
            style: { badgeSize: 16, badgeColor: '#FA2A2D' }
          }) {
            Text('list2').width(27).height(19).fontSize(14).fontColor('#182431')
          }.width(49.5).height(19).margin(30).backgroundColor(Color.Green)
    
          Badge(
            {
              value: this.nu.toString(),
              position: BadgePosition.RightTop,
              style: { badgeSize: 16, badgeColor: '#FA2A2D' }
            }
    
          ) {
            Image($r('app.media.app_icon'))
              .size({width:30, height:30})
          }
    
        }.width("100%")
    
      }
    }
    
    微信图片_20231225161845.png

    相关文章

      网友评论

          本文标题:鸿蒙~ArkUI list 第二篇 ---列表项侧滑、列表项

          本文链接:https://www.haomeiwen.com/subject/jlrhndtx.html