通过拖放复制视图Android
问题描述:
如何在Android上将视图(例如图像)从一个面板复制到另一个面板? 我试过:通过拖放复制视图Android
case DragEvent.ACTION_DROP:
View view = (View) event.getLocalState();
LinearLayout container = (LinearLayout) v;
container.addView(view);
break;
但是,它不起作用。
这ondrag当是()函数,我的应用程序退出的Exception
:
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;
}
答
Probabily你得到一个java.lang.IllegalStateException,指出“指定的小孩已经有母。”你必须做的是添加
View view = (View) event.getLocalState();
ViewGroup owner = (ViewGroup) view.getParent();
owner.removeView(view);
当动作是DragEvent.ACTION_DROP。
但我想通过拖放复制视图。如果我添加这个代码,它只是移动视图 – tranductrinh
然后,你需要从ImageView中复制图像,并创建一个新的ImageView,你将通过'Drawable copyImage = copyView.getDrawable(); ImageView image = new ImageView (MainActivity.this); image.setImageDrawable(copyImage);'。此外,确保在调用'v.startDrag(data,shadowBuilder,v,0);'时不会使视图不可见。 –
谢谢你,你可以在这里回答我的问题:http://stackoverflow.com/questions/17907703/create-edittext-by-drag-drop-android-issue – tranductrinh