Android 通过拖放复制视图
在Android上,如何将视图(如图像)从一个面板复制到另一个面板? 我试过:Android 通过拖放复制视图,android,Android,在Android上,如何将视图(如图像)从一个面板复制到另一个面板? 我试过: case DragEvent.ACTION_DROP: View view = (View) event.getLocalState(); LinearLayout container = (LinearLayout) v; container.addView(view);
case DragEvent.ACTION_DROP:
View view = (View) event.getLocalState();
LinearLayout container = (LinearLayout) v;
container.addView(view);
break;
但是,它不起作用。这是onDrag()函数,我的应用程序通过异常退出:
public boolean onDrag(View v, DragEvent event) {
int action = event.getAction();
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
// Do nothing
break;
case DragEvent.ACTION_DRAG_ENTERED:
v.setBackgroundDrawable(enterShape);
break;
case DragEvent.ACTION_DRAG_EXITED:
v.setBackgroundDrawable(normalShape);
break;
case DragEvent.ACTION_DROP:
// add view
View view = (View) event.getLocalState();
LinearLayout container = (LinearLayout) v;
container.addView(view);
break;
case DragEvent.ACTION_DRAG_ENDED:
v.setBackgroundDrawable(normalShape);
default:
break;
}
return true;
}
很可能您会得到一个java.lang.IllegalStateException,声明“指定的子级已经有了父级”。您必须做的是添加
View view = (View) event.getLocalState();
ViewGroup owner = (ViewGroup) view.getParent();
owner.removeView(view);
当操作为DragEvent.action\u DROP.但我想通过拖放复制视图。如果我添加这段代码,它只是移动视图,那么您需要从ImageView复制图像并创建一个新的ImageView,您将使用
Drawable copyImage=copyView.getDrawable()将其添加到容器中;ImageView image=新的ImageView(MainActivity.this);image.setImageDrawable(copyImage)代码>。另外,请确保在调用v.startDrag(data,shadowBuilder,v,0)时不会使视图不可见代码>。谢谢你,你能在这里回答我的问题吗: