HarmonyOS 鸿蒙Next ListItem的swipeAction横滑 能否手动控制展开或者收起

发布于 1周前 作者 nodeper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next ListItem的swipeAction横滑 能否手动控制展开或者收起

ListItem的swipeAction横滑,能否不通过手势滑动,通过事件触发收起,比如某个按钮控制swipeAction删除按钮的收起

点击修改或者删除,弹窗提示是否确定,点击取消 右侧的swipeAction能否控制收起

2 回复

可以使用ListScroller提供的closeAllSwipeActions()方法将滑动效果进行恢复,参考文档如下:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-container-list#closeallswipeactions11

示例代码如下:

import { common } from '[@kit](/user/kit).AbilityKit'

[@CustomDialog](/user/CustomDialog)

struct CustomDialogExample {

  cancel?: () => void

  confirm?: () => void

  controller: CustomDialogController

  build() {

    Column() {

      Text('我是内容').fontSize(20).margin({ top: 10, bottom: 10 })

      Flex({ justifyContent: FlexAlign.SpaceAround }) {

        Button('cancel').onClick(() => {

          this.controller.close()

          if (this.cancel) this.cancel()

        }).backgroundColor(0xffffff).fontColor(Color.Black)

        Button('confirm').onClick(() => {

          this.controller.close()

          if (this.confirm) this.confirm()

        }).backgroundColor(0xffffff).fontColor(Color.Red)

      }.margin({ bottom: 10 })

    }

  }

}

[@Entry](/user/Entry)

[@Component](/user/Component)

struct ListSwipePage {

  [@State](/user/State) arr: number[] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

  private scrollerForList: ListScroller = new ListScroller()

  dialogController: CustomDialogController = new CustomDialogController({

    builder: CustomDialogExample({

      cancel: this.onCancel,

      confirm: this.onAccept,

    })

  })

  onCancel() {

  }

  onAccept() {

  }

  [@Builder](/user/Builder)

  itemEnd() {

    Row() {

      Button("Delete").margin("4vp")

      Button("Set").margin("4vp")

        .onClick(() => {

          this.dialogController.open()

          this.scrollerForList.closeAllSwipeActions() // 重点是这行代码

        })

    }.padding("4vp").justifyContent(FlexAlign.SpaceEvenly)

  }

  build() {

    Column() {

      List({ space: 5, scroller: this.scrollerForList }) {

        ForEach(this.arr, (item: number) => {

          ListItem() {

            Text("item" + item)

              .width('100%')

              .height(100)

              .textAlign(TextAlign.Center)

              .borderRadius(10)

              .backgroundColor(0xFFFFFF)

          }

          .transition({ type: TransitionType.Delete, opacity: 0 })

          .swipeAction({

            end: {

              builder: () => {

                this.itemEnd()

              },

              onAction: () => {

                animateTo({ duration: 1000 }, () => {

                  let index = this.arr.indexOf(item)

                  this.arr.splice(index, 1)

                })

              }, actionAreaDistance: 56

            }

          })

        }, (item: string) => item)

      }

    }

    .padding(20).backgroundColor(0xDCDCDC).width('100%').height('100%')

  }

}

更多关于HarmonyOS 鸿蒙Next ListItem的swipeAction横滑 能否手动控制展开或者收起的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙系统中,针对Next ListItem的swipeAction横滑功能,可以通过编程方式手动控制其展开或收起状态。具体来说,系统提供了相应的API接口来实现这一功能。

要实现手动控制,你需要首先获取到ListItem组件的引用,并调用其提供的控制swipeAction状态的方法。这些方法通常允许你设置swipeAction为展开、收起或某个中间状态。

在鸿蒙系统的UI框架中,你可以利用组件的状态管理功能,通过修改组件的某个属性或调用某个方法来实现swipeAction的展开与收起。例如,可以设置swipeAction的某个属性为true以展开,设置为false以收起。

此外,鸿蒙系统还支持通过事件监听机制来响应用户的滑动操作,但如果你需要完全手动控制,可以忽略这些事件监听,直接通过代码来设置swipeAction的状态。

请注意,具体实现细节可能依赖于你使用的鸿蒙系统版本和具体的ListItem组件版本。因此,在实现时,建议查阅最新的鸿蒙开发文档,以确保使用正确的方法和属性。

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

回到顶部