HarmonyOS Grid拖拽无回调

Grid拖拽无相关拖拽回调,屏幕下方总会弹出"拖入小艺",怎么避免这个弹出?

HarmonyOS
2024-12-25 14:47:09
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

Image的draggable自API10及之后默认值为true,支持拖拽导致产生了误触,其实想拖gridItem却拖动的是gridItem里面的Image,单纯Image的推动无法触发grid的onItemDragStart回调,所以只需要把Image的拖动draggable改为false即可,参考代码如下:

@Entry
@Component
struct Second {
  @State addedItems: string[] = ['ct', 'co', 'uv', '13', '1', '26', 'xc']
  private scroller: Scroller = new Scroller()

  @Builder
  dragItem(item: string) {
    Column() {
      Image($r('app.media.app_icon'))
        .width(44)
        .height(44)
        .draggable(false)
        .objectFit(ImageFit.Contain)
      Text(`index:${item}`)
        .fontSize(12)
        .margin({ top: 5 })
    }
    .height(99)
  }

  build() {
    Column() {
      Grid(this.scroller) {
        ForEach(this.addedItems, (item: string) => {
          GridItem() {
            Column() {
              Image($r('app.media.app_icon'))
                .width(44)
                .height(44)
                .objectFit(ImageFit.Contain)
                .draggable(false)
              Text(`index:${item}`)
                .fontSize(12)
                .margin({ top: 5 })
            }
            .height(99)
          }
        })
      }
      .columnsGap(10)
      .rowsGap(10)
      .columnsTemplate('1fr 1fr 1fr 1fr')
      .supportAnimation(true)
      .height(220)
      .width('100%')
      .backgroundColor(Color.Yellow)
      .editMode(true)
      .onItemDragStart(((event: ItemDragInfo, index: number) => {
        console.log('tag', '----------onItemDragStart')
        return this.dragItem(this.addedItems[index])
      }))
      .onItemDrop((event: ItemDragInfo, itemIndex: number, insertIndex: number,
        isSuccess: boolean) => {
        console.log('tag', '----------onItemDrop')
        if (!isSuccess || insertIndex >= this.addedItems.length) {
          return
        }
        this.changeIndex(itemIndex, insertIndex)
      })
    }
    .height('100%')
    .width('100%')
  }

  changeIndex(index1: number, index2: number) {
    const temp = this.addedItems[index1];
    this.addedItems[index1] = this.addedItems[index2];
    this.addedItems[index2] = temp;
  }
}
分享
微博
QQ
微信
回复
2024-12-25 15:56:55
相关问题
HarmonyOS Grid组件拖拽排序
243浏览 • 1回复 待解决
HarmonyOS Grid拖拽动画问题
222浏览 • 1回复 待解决
Grid如何实现拖拽功能
2823浏览 • 1回复 待解决
HarmonyOS grid拖拽后动画不流畅
178浏览 • 1回复 待解决
HarmonyOS grid拖拽和增删动画效果
205浏览 • 1回复 待解决
grid如何怎么实现拖拽功能
992浏览 • 1回复 待解决
HarmonyOS grid拖拽效果如何添加动画
194浏览 • 1回复 待解决
HarmonyOS 关于Grid组件拖拽排序的问题
687浏览 • 1回复 待解决
HarmonyOS Grid自适应高度和拖拽问题
771浏览 • 1回复 待解决
HarmonyOS 事件
273浏览 • 1回复 待解决
HarmonyOS Watch没有
185浏览 • 1回复 待解决
HarmonyOS Web组件
408浏览 • 1回复 待解决
HarmonyOS onNewWant未
143浏览 • 1回复 待解决
HarmonyOS 屏幕亮度变化
118浏览 • 1回复 待解决
HarmonyOS 人脸识别问题
215浏览 • 1回复 待解决
HarmonyOS Slider值问题
246浏览 • 1回复 待解决