通过拖放复制视图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。

+0

但我想通过拖放复制视图。如果我添加这个代码,它只是移动视图 – tranductrinh

+0

然后,你需要从ImageView中复制图像,并创建一个新的ImageView,你将通过'Drawable copyImage = copyView.getDrawable(); ImageView image = new ImageView (MainActivity.this); image.setImageDrawable(copyImage);'。此外,确保在调用'v.startDrag(data,shadowBuilder,v,0);'时不会使视图不可见。 –

+0

谢谢你,你可以在这里回答我的问题:http://stackoverflow.com/questions/17907703/create-edittext-by-drag-drop-android-issue – tranductrinh