如何在Android RelativeLayout中拖放视图

时间:2012-04-09 12:39:48

标签: android android-layout drag-and-drop

我制作了自己的拖放功能。

我想用RelativeLayout执行此操作,但这似乎不能很好地工作。 在开始时,我可以告诉每个View我希望通过将其设置在View之前的位置来拖动它应该是什么位置。

但是当我想拖动一个视图时,它下面的所有其他视图也会被移动,因为它们想要保持我设置它们的顺序。

但是我可以使用其他布局吗?我必须在不同的屏幕尺寸上使用这种拖放功能,所以我不能这样做。为他们提供固定的xy值。

1 个答案:

答案 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投射到相对布局 祝你好运......