HarmonyOS 列表联动交互

1、当满足底部二级页面悬浮时,加载当前页面最上层,并开启上拉手势,上拉拖拽直接在当前页面上层浮动

2、当前页面上拉满足悬浮页面需要跟着上拉时,将悬浮页面添加到当前页面的list列表中跟着一起上拉

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

参考demo:

@Entry
@Component
struct ListExample {
  private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  scroller: Scroller = new Scroller()
  @State isTogether: boolean = true
  build() {
    if (this.isTogether) {
      this.item2()
    } else {
      Stack({alignContent:Alignment.Bottom}) {
        this.item2()
        this.item1()
      }
    }
  }

  //实际项目中抽象成独立的组件
  @Builder
  item1() {
    Scroll(this.scroller) {
      Column() {
        //为了滑动效果做的占位组件
        if (!this.isTogether) {
          Column()
            .width("100%")
            .height("80%")
            .onClick(() => {
              this.isTogether = true
            })

        }
        Button(`button `)
          .borderWidth(2)
          .backgroundColor(Color.Orange)
          .width("100%")
          .height(100)
          .onClick(() => {
            this.isTogether = false
          })
        //为了滑动效果做的占位组件
        if (!this.isTogether) {
          Column()
            .height("80%")
        }
      }
      .width('100%')

    }
    .scrollable(ScrollDirection.Vertical) // 滚动方向纵向
    .scrollBar(BarState.Off)

  }

  //实际项目中抽象成独立的组件
  @Builder
  item2() {
    List({ space: 20, initialIndex: 0 }) {
      ForEach(this.arr, (item: number) => {
        ListItem() {
          //当item是6的时候现实不同的组件
          if (item == 6) {
            if (this.isTogether) {
              this.item1()
            }
          } else {
            Text('' + item)
              .width('100%').height(100).fontSize(16)
              .textAlign(TextAlign.Center).borderRadius(10).backgroundColor(0xFFFFFF)
              .onClick(() => {
                this.isTogether = true;
              })
          }
        }
      }, (item: string) => item)
    }
    .listDirection(Axis.Vertical) // 排列方向
    .scrollBar(BarState.Off)
    .friction(0.6)
    .edgeEffect(EdgeEffect.Spring) // 边缘效果设置为Spring
    .width('100%')
  }
}
分享
微博
QQ
微信
回复
2天前
相关问题
HarmonyOS 联动组件咨询
302浏览 • 1回复 待解决
HarmonyOS List联动滑动
21浏览 • 1回复 待解决
HarmonyOS中的多设备联动如何实现?
153浏览 • 0回复 待解决
HarmonyOS TextPickerDialog多级联动问题
40浏览 • 1回复 待解决
HarmonyOS WebView与js交互
56浏览 • 1回复 待解决
HarmonyOS 原生与js交互
233浏览 • 1回复 待解决
HarmonyOS web和js交互
195浏览 • 1回复 待解决
HarmonyOS 需要二级联动的demo
299浏览 • 1回复 待解决
HarmonyOS web组件和js交互
150浏览 • 1回复 待解决
HarmonyOS RN如何与Native交互
220浏览 • 1回复 待解决
tabs组件和页面组合联动的方式
679浏览 • 1回复 待解决