HarmonyOS swipeAction方法是否有api控制侧滑展开,隐藏?

项目需求中, 需要实现在点击列表项中的按钮时,要自动显示侧滑展开的UI,目前HarmonyOS里有实现侧滑的功能,即swipeAction方法,但这个需要手动侧滑才能显示,不满足我的需求,我这边需要通过按钮触发,然后调用侧滑的组件显示

HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

请参考以下示例:

@Observed
class showData2 {
  num: number
  offsetX: number
  isDelShow: boolean

  constructor(num: number, offsetX: number, isDelShow: boolean) {
    this.num = num
    this.offsetX = offsetX
    this.isDelShow = isDelShow
  }
}

@Observed
class showArray extends Array<showData2> {
}

// xxx.ets
@Entry
@Component
struct Demo {
  @State arr: showData2[] = new showArray()

  aboutToAppear(): void {
    for (let i = 0; i < 50; i++) {
      this.arr.push(new showData2(i, 0, false))
    }
  }

  build() {
    Column() {
      List({ space: 10 }) {
        ForEach(this.arr, (item: showData2, index: number) => {
          itemC2({ item: item })
        }, (item: showData2) => JSON.stringify(item))
      }
    }
    .padding(10)
    .backgroundColor(0xDCDCDC)
    .width('100%')
    .height('100%')
  }
}


@Component
struct itemC2 {
  @ObjectLink item: showData2

  build() {
    ListItem() {
      Row() {
        Text("item" + this.item.num)
          .width('100%')
          .height(100)
          .fontSize(16)
          .textAlign(TextAlign.Center)
          .borderRadius(10)
          .backgroundColor(0xFFFFFF)
        Row() {
          Button('删除')
        }
        .width(120)
        .justifyContent(FlexAlign.Center)
      }
    }
    .offset({ x: this.item.offsetX })
    .transition({ type: TransitionType.Delete, opacity: 0 })
    .priorityGesture(
      PanGesture({ direction: PanDirection.Horizontal, distance: 1 })
        .onActionStart((event: GestureEvent) => {
          console.info('Pan start')
        })
        .onActionUpdate((event: GestureEvent) => {
          if (this.item.isDelShow) {
            this.item.offsetX =
              (-120 + event.offsetX) < -120 ? -120 : (-120 + event.offsetX) > 0 ? 0 : (-120 + event.offsetX)
          } else {
            this.item.offsetX = event.offsetX < -120 ? -120 : event.offsetX > 0 ? 0 : event.offsetX
          }
          console.log('this.item.offsetX', this.item.offsetX)
        })
        .onActionEnd((event: GestureEvent) => {
          console.log('this.item.offsetX', this.item.offsetX)
          if (this.item.offsetX > -60) {
            animateTo({
              duration: 300,
              onFinish: () => {
                console.info('play end')
              },
              expectedFrameRateRange: {
                min: 10,
                max: 120,
                expected: 60,
              }
            }, () => {
              this.item.offsetX = 0
              this.item.isDelShow = false
            })
          } else {
            animateTo({
              duration: 300,
              onFinish: () => {
                console.info('play end')
              },
              expectedFrameRateRange: {
                min: 10,
                max: 120,
                expected: 60,
              }
            }, () => {
              this.item.offsetX = -120
              this.item.isDelShow = true
            })
          }
        })
    )
    .onClick(() => {
      if (this.item.offsetX > -60) {
        animateTo({
          duration: 300,
          onFinish: () => {
            console.info('play end')
          },
          expectedFrameRateRange: {
            min: 10,
            max: 120,
            expected: 60,
          }
        }, () => {

          this.item.offsetX = -120
          this.item.isDelShow = true
        })
      } else {
        animateTo({
          duration: 300,
          onFinish: () => {
            console.info('play end')
          },
          expectedFrameRateRange: {
            min: 10,
            max: 120,
            expected: 60,
          }
        }, () => {
          this.item.offsetX = 0
          this.item.isDelShow = false
        })
      }

    })
  }
}
分享
微博
QQ
微信
回复
2天前
相关问题
HarmonyOS是否弹出隐藏软键盘的api
11浏览 • 1回复 待解决
删除功能的列表哪些?
808浏览 • 1回复 待解决
HarmonyOS 事件
56浏览 • 1回复 待解决
HarmonyOS 怎么禁止
161浏览 • 1回复 待解决
HarmonyOS 退出问题
51浏览 • 1回复 待解决
HarmonyOS RN删除组件
30浏览 • 1回复 待解决
HarmonyOS TabContent控制显示隐藏
52浏览 • 1回复 待解决
HarmonyOS ListItem菜单动态设置
80浏览 • 1回复 待解决
HarmonyOS dialog如何禁止返回关闭
36浏览 • 1回复 待解决
如何控制通知是否铃声?
1806浏览 • 1回复 待解决
HarmonyOS 返回事件拦截与绑定
1308浏览 • 1回复 待解决