【发布时间】:2016-01-27 22:52:56
【问题描述】:
我是一个初学者 android 开发者,我正在尝试构建一个小型的土壤游戏。 为了拖动卡片,我从这里的一个问题中实现了一个自定义视图组,它是一个“DragContainer”。 我的问题是当我拖动线性布局时。我的线性布局拿着卡片 带有 - 边距(与卡片重叠)但是当我开始拖动时,拖动的“阴影”是我没有边距的布局。 这是一个例子
this is the start of the activity, the left is a linear layout with two children and also the right
当我开始拖动时,这就是我所看到的
as you can see the dragged "shadow" is bigger(without the - margin)
这是自定义拖动容器的代码(仅重要的东西):
public boolean startDragChild(View child, ClipData data,
Object myLocalState, int flags) {
setDragTarget(child);
return child.startDrag(data, new EmptyDragShadowBuilder(child),
myLocalState, flags);
}
private void setDragTarget(View v) {
target = v;
onSetDragTarget(v);
}
/**
* this is similar to the constructor of DragShadowBuilder
*
* @param v
*/
protected void onSetDragTarget(View v) {
}
@Override
protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
if (mOnDrag && target != null) {
canvas.save();
drawDragShadow(canvas);
canvas.restore();
}
}
protected void drawDragShadow(Canvas canvas) {
int h = target.getHeight();
int w = target.getWidth();
canvas.translate(mDragX - w / 2, mDragY - h / 2);
target.draw(canvas);
}
【问题讨论】:
-
如果您想回答
ViewGroup变体,请解释更多细节。我已阅读但无法理解您的问题。 -
我看过这个例子,我明白了,但这对我没有帮助,因为它只用于拖动一个图像视图,而不是我需要的线性布局(我尝试使用 android“拖放" API 并且无法使其工作,我看不到为线性布局创建的阴影。这是我的另一个问题的链接 (stackoverflow.com/questions/35015676/…) @PankajNimgade。
-
和@ghostman 我的问题是拖动的Linearlayout 的阴影不考虑其上设置的边距。 ViewGroup 变体只是为了展示我是如何实现拖放的。
标签: android drag-and-drop android-linearlayout