HarmonyOS 鸿蒙Next如何将listitem的swipeAction滑动效果恢复至未滑动

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

HarmonyOS 鸿蒙Next如何将listitem的swipeAction滑动效果恢复至未滑动

【关键字】

  • listitem
  • swipeAction
  • 滑动效果
  • 恢复

【问题描述】

如何将listitem的swipeAction滑动效果恢复至未滑动?

【解决方案】

可以使用ListScroller提供的closeAllSwipeActions()方法将滑动效果进行恢复。

参考文档如下: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-container-list-V5#closeallswipeactions11

示例代码如下:

@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
@Component
struct ListSwipePage {
    @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
    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

1 回复

更多关于HarmonyOS 鸿蒙Next如何将listitem的swipeAction滑动效果恢复至未滑动的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,若要将listitem的swipeAction滑动效果恢复至未滑动状态,通常涉及对组件状态的直接操作或重置。以下是一种可能的实现方法:

  1. 获取SwipeAction组件:首先,确保你能够访问到实现了swipeAction功能的组件实例。这通常是在你的UI布局文件中定义的,或者通过代码动态创建的。

  2. 重置滑动状态:一旦获取到组件实例,你需要调用相应的方法来重置其滑动状态。在鸿蒙的API中,可能会提供一个方法来取消当前的滑动效果或恢复到初始状态。具体方法名可能类似于resetSwipeState()clearSwipeAction()(注意:这些方法名是假设性的,实际API可能有所不同)。

  3. 刷新UI:在重置状态后,确保调用UI刷新方法,如invalidate()或类似函数,以应用更改并更新用户界面。

  4. 测试与验证:在应用上述更改后,彻底测试以确保滑动效果已正确恢复至未滑动状态。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html 。请注意,由于鸿蒙系统的API可能会随着版本更新而变化,建议查阅最新的官方文档以获取最准确的信息。

回到顶部