3

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

我想用 a 来做到这一点RelativeLayout,但这似乎效果不佳。一开始我可以通过将其设置在之前的下方来告诉每个View我想拖动它应该在哪个位置View

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

但是我可以使用什么其他布局呢?我必须在不同的屏幕尺寸上使用这个拖放功能,所以我不能给它们固定xy值。

4

1 回答 1

8

前段时间我遇到了同样的麻烦,如果您不想将其他视图(在您的视图下方或上方或在您的视图旁边)与被拖动的视图一起拖动,则使用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 投射到你的相对布局祝你好运......

于 2012-04-09T15:00:05.150 回答