Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 通过拖放复制视图_Android - Fatal编程技术网

Android 通过拖放复制视图

Android 通过拖放复制视图,android,Android,在Android上,如何将视图(如图像)从一个面板复制到另一个面板? 我试过: case DragEvent.ACTION_DROP: View view = (View) event.getLocalState(); LinearLayout container = (LinearLayout) v; container.addView(view);

在Android上,如何将视图(如图像)从一个面板复制到另一个面板? 我试过:

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)时不会使视图不可见。谢谢你,你能在这里回答我的问题吗: