【问题标题】:How can I drag and drop Views within Android RelativeLayout如何在 Android RelativeLayout 中拖放视图
【发布时间】:2012-04-09 12:39:47
【问题描述】:

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

我想用RelativeLayout 来做这件事,但这似乎不太好用。 一开始我可以告诉每个View我想拖动它应该在哪个位置,方法是把它设置在View之前。

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

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

【问题讨论】:

  • 我应该使用哪种布局。因为使用RelativeLayout 我不能按照我想要的方式做到这一点......
  • 我在我的应用程序中使用(网格)拖放和纯自定义布局。这意味着从 ViewGroup 派生。
  • Grid 我看到了……嗯……所以我可以将我的视图(RelativeLayout)添加到网格视图中,我可以单独拖动每个视图,对吧?

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


【解决方案1】:

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

【讨论】:

  • 您能告诉我您是如何移动您的视图的吗?因为我是这样做的:RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); params.leftMargin = x-75; params.topMargin = y-25; currentDraggedRectangle.setLayoutParams(params);但这不再适用于 ViewGroup
  • 嗯……谢谢!但它很难......我的自定义视图扩展了RelativeLayout,我必须导入它......
猜你喜欢
  • 1970-01-01
  • 2014-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-17
  • 2013-03-04
  • 1970-01-01
相关资源
最近更新 更多