HarmonyOS 鸿蒙Next组件拖拽移除

HarmonyOS 鸿蒙Next组件拖拽移除 使用https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-arkui-dragcontroller-V5#dragcontrollerexecutedrag

dragcontroller实现Image组件的拖拽,已知组件和父组件的位置信息,如何实现移出父组件清除,貌似根据文档dragcontroller拿不到回调的位置信息


更多关于HarmonyOS 鸿蒙Next组件拖拽移除的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS 鸿蒙Next组件拖拽移除的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙Next)中,组件的拖拽移除功能是通过事件处理和布局管理实现的。开发者可以使用DragEvent类来监听拖拽事件,并通过onDrag方法来处理拖拽操作。在拖拽过程中,可以通过DragEvent.ACTION_DROP事件来判断用户是否释放了组件,如果释放了,则可以从布局中移除该组件。

具体实现步骤如下:

  1. 为需要拖拽的组件设置OnLongClickListener,在长按事件中启动拖拽操作。
  2. onDrag方法中处理拖拽事件,判断是否为ACTION_DROP事件。
  3. 如果是ACTION_DROP事件,则从父布局中移除该组件。

示例代码片段:

view.setOnLongClickListener(v -> {
    ClipData data = ClipData.newPlainText("", "");
    View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(v);
    v.startDragAndDrop(data, shadowBuilder, v, 0);
    return true;
});

view.setOnDragListener((v, event) -> {
    if (event.getAction() == DragEvent.ACTION_DROP) {
        ViewGroup parent = (ViewGroup) v.getParent();
        parent.removeView(v);
    }
    return true;
});

此代码实现了组件的拖拽移除功能。

回到顶部