我制作了自己的拖放功能。
我想用 a 来做到这一点RelativeLayout
,但这似乎效果不佳。一开始我可以通过将其设置在之前的下方来告诉每个View
我想拖动它应该在哪个位置View
。
但是当我想拖动一个视图时,它下面的所有其他视图也会移动,因为它们想要保持我设置它们的顺序。
但是我可以使用什么其他布局呢?我必须在不同的屏幕尺寸上使用这个拖放功能,所以我不能给它们固定x
的y
值。
我制作了自己的拖放功能。
我想用 a 来做到这一点RelativeLayout
,但这似乎效果不佳。一开始我可以通过将其设置在之前的下方来告诉每个View
我想拖动它应该在哪个位置View
。
但是当我想拖动一个视图时,它下面的所有其他视图也会移动,因为它们想要保持我设置它们的顺序。
但是我可以使用什么其他布局呢?我必须在不同的屏幕尺寸上使用这个拖放功能,所以我不能给它们固定x
的y
值。
前段时间我遇到了同样的麻烦,如果您不想将其他视图(在您的视图下方或上方或在您的视图旁边)与被拖动的视图一起拖动,则使用ViewGroup.LayoutParams
而不是RelativeLayout.LayoutParams
,如果您按下 Ctrl-Shift 则会导入后者-O,所以手动改成前者。
编辑:既然你想描述我是如何实现的,这里是实际的代码
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);
我必须做很多研究才能达到同样的效果,我花了 2 天时间才发现存在一个叫做 MarginLayoutParams 的东西......
确保你有
import android.view.ViewGroup.LayoutParams;
import android.view.ViewGroup.MarginLayoutParams;
作为你的进口而不是RelativeLayout.LayoutParams
.
还要确保你将 marginparams 投射到你的相对布局祝你好运......