美文网首页
鸿蒙~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

相关文章

  • 3.CSS背景和列表-第三章CSS列表

    list-style-type 无须列表 有序列表 列表项标记位置 设置列表项标记的位置list-style-po...

  • 列表

    1、无序列表: 无序列表始于 标签 每个列表项始于 标签 2、有序列表: 有序列表也是一列项目,列表项目使用数字...

  • 有序列表与无序列表

    1.有序列表: 有序列表同样,有序列表也是一列项目,列表项目使用数字进行标记。有序列表始于标签 。每个列表项始于 ...

  • Android 使用popuwindow仿drawLayout实

    Android 使用popuwindow仿drawLayout实现侧滑隐藏 背景: 最近公司有一个需求,点击列表项...

  • 2018-05-31

    我的世界 #我的世界# * 这是一个列表项 这是第一列表项中的第二个段落 * 这是列表的另一个项目

  • Markdown语法测试

    我是一个标题# 我也是一个标题## 我是引用嵌套引用多重嵌套试试这里是第几块引用块中的标题 列表项1 列表项2 列...

  • markdown常用的语法

    列表 有序列表: 列表项 1 列表项 2 无序列表: 列表项 1 列表项 2 列表项 3 列表项 4 列表项缩进两...

  • 6.列表样式-CSS基础

    一、列表项符号(list-style-type) 在HTML中,对于有序、无序列表的列表项符号,都是使用type属...

  • 2021-09-13 linux内核理解——系统内存管理功能4

    虚拟页式存储管理加了“虚拟”两个字后,页表项发生了一些变化,即从之前的2列扩展成了6列。如下图所示,第三列状态位P...

  • Markdown 练习

    认识和入门Markdown 一级标题 二级标题 三级标题 列表项1 列表项2 列表项3 列表项4 列表项 列表项 ...

网友评论

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

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