我制作了自己的拖放功能。
我想用RelativeLayout
执行此操作,但这似乎不能很好地工作。
在开始时,我可以告诉每个View
我希望通过将其设置在View
之前的位置来拖动它应该是什么位置。
但是当我想拖动一个视图时,它下面的所有其他视图也会被移动,因为它们想要保持我设置它们的顺序。
但是我可以使用其他布局吗?我必须在不同的屏幕尺寸上使用这种拖放功能,所以我不能这样做。为他们提供固定的x
和y
值。
答案 0 :(得分:8)
前一段时间我遇到了同样的问题,如果您不想拖动其他视图(视图下方或上方或旁边)以及被拖动的视图,请使用ViewGroup.LayoutParams
代替{{1如果按Ctrl-Shift-O,则会导入后者,因此请手动将其更改为前者。
编辑:既然你想要我如何实现这一点的描述,这里是实际的代码
RelativeLayout.LayoutParams
为了达到同样的目的,我不得不进行大量的研究,花了2天的时间才发现一个名为MarginLayoutParams的东西存在......
确保你有
MarginLayoutParams marginParams = new MarginLayoutParams(image.getLayoutParams());
int left = (int) event.getRawX() - (v.getWidth() / 2);
int top = (int) event.getRawY() - (v.getHeight());
marginParams.setMargins(left, top, 0, 0);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(marginParams);
image.setLayoutParams(layoutParams);
作为您的导入,而不是import android.view.ViewGroup.LayoutParams;
import android.view.ViewGroup.MarginLayoutParams;
。
还要确保将marginparams投射到相对布局 祝你好运......