Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android RelativeLayout中拖放视图_Android_Android Layout_Drag And Drop - Fatal编程技术网

如何在Android RelativeLayout中拖放视图

如何在Android RelativeLayout中拖放视图,android,android-layout,drag-and-drop,Android,Android Layout,Drag And Drop,我制作了自己的拖放功能 我想用一个RelativeLayout来实现这一点,但这似乎效果不太好。 开始时,我可以告诉每个视图我想通过将其设置在前面的视图下方来拖动它的位置 但是当我想拖动一个视图时,它下面的所有其他视图也会被移动,因为它们希望保持我设置它们的顺序 但是我可以用什么其他的布局呢?我必须在不同的屏幕大小上使用此拖放功能,因此我无法为它们提供固定的x和y值。我不久前遇到过同样的问题,如果您不想在拖动视图的同时拖动其他视图(视图下方、上方或旁边),然后使用ViewGroup.Layout

我制作了自己的拖放功能

我想用一个
RelativeLayout
来实现这一点,但这似乎效果不太好。 开始时,我可以告诉每个
视图
我想通过将其设置在前面的
视图
下方来拖动它的位置

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


但是我可以用什么其他的布局呢?我必须在不同的屏幕大小上使用此拖放功能,因此我无法为它们提供固定的
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);  
为了达到同样的效果,我做了大量的研究,花了两天的时间才发现存在一种叫做MarginLayoutParams的东西

确保你有

import android.view.ViewGroup.LayoutParams;
import android.view.ViewGroup.MarginLayoutParams;
作为导入,而不是
RelativeLayout.LayoutParams

还要确保将marginparams强制转换为相对布局
祝你好运…

我应该使用哪种布局。因为有了RelativeLayout,我无法按我所希望的方式完成这项工作……我在应用程序中使用(网格)拖放,并使用纯自定义布局。这意味着从ViewGroup.Grid中派生。。嗯。。。所以我可以将我的视图(RelativeLayout)添加到网格视图中,我可以自己拖动每个视图,对吗?你能告诉我你是如何移动视图的吗?因为我使用的是:RelativeLayout.LayoutParams params=new RelativeLayout.LayoutParams(LayoutParams.WRAP\u内容,LayoutParams.WRAP\u内容);参数leftMargin=x-75;参数topMargin=y-25;CurrentlyDragedRectangle.setLayoutParams(参数);但这在ViewGroupMH中不再起作用。。非常感谢。但这很难。。。我的自定义视图扩展了RelativeLayout,我必须导入它。。。