如何实现“动态”拖放(如iOS / Android)?

时间:2018-02-05 14:39:08

标签: drag-and-drop codenameone

我想在列表中实现'动态'拖放。通过'动态',我的意思是在拖动发生的列表中,拖动元素下方有一个空白空间,当你拖动列表时“跟随它”(以使视觉上显而易见的是被删除的元素将在哪里结束)列表)。就像你在支持D& D的iOS / Android应用程序中看到的那样。

我尝试过的是使用Component.dragEnter插入一个空组件,其中拖动元素的大小位于拖动的组件下方。当拖动移动到列表中时,删除旧组件并在新位置插入一个新组件(解释为什么我在下一段中创建新组件)。但是,随着CN1在拖动时所做的动态更新,以及移动空组件时我自己的更新,我只是找不到使其工作的方法,所以我得到了正确的虚拟行为。让你比起初想的更复杂的一个方面是CN1内置的拖放支持使得原始的拖动组件与setVisible(false)不可见,这意味着它留下了一个空的空间。

我重新创建一个新的空组件的原因是因为最终的drop()将在空的Component上发生,而我的工作方法就是覆盖dropTarget上的空组件上的drop()。 (是)在组件的位置。

总而言之,我花了很长时间才知道有多少天试图让这个工作没有成功。让我知道是否有人建议采取更直接的方法?

提前非常感谢!

1 个答案:

答案 0 :(得分:0)

内置支持隐藏原始组件,但拖动它的图像,您可以通过覆盖getDragImage()来自定义它。

您可以使用自定义代码通过使用拖动侦听器来突出显示放置位置,您可以使用addDragOverListener(ActionListener)来完成。