拖放而不从所有者删除

use*_*995 9 android drag-and-drop

我在一个LinearLayout上使用三个TextViews Drag&Drop将它移动到另一个容器.我的代码:

OnDragListener dragi = new OnDragListener() {

            @Override
            public boolean onDrag(View arg0, DragEvent arg1) {
                // TODO Auto-generated method stub
                int action = arg1.getAction();
                switch (action) {
                case DragEvent.ACTION_DRAG_STARTED:

                break;
                case DragEvent.ACTION_DRAG_ENTERED:

                break;
                case DragEvent.ACTION_DRAG_EXITED:

                break;
                case DragEvent.ACTION_DROP:

                View view = (View) arg1.getLocalState();
                  ViewGroup owner = (ViewGroup) view.getParent();
                  owner.removeView(view);
                  //
                  LinearLayout container = (LinearLayout) arg0;
                  container.addView(view);
                  view.setVisibility(View.VISIBLE);

                  }
                  break;
                case DragEvent.ACTION_DRAG_ENDED:

                  break;
                default:
                  break;
                }
                return true;
            }
        };
Run Code Online (Sandbox Code Playgroud)

我的问题是,我不想从基本容器中删除视图,它应该留在那里,只需将副本添加到第二个容器.

谢谢

nun*_*123 6

视图在任何给定时刻只能有一个父项,您可以执行的操作是拖放,而不是将视图放入新容器中创建视图的克隆并将其添加到新容器中.

要克隆视图:如果你的view => Button名为myButton,那么你可以这样做:

Button myButtonClone = new Button(context);
myButtonClone.setText(myButton.getText());
Run Code Online (Sandbox Code Playgroud)

您将拥有原始按钮的克隆.这适用于所有其他属性,如果要复制ImageView,只需创建一个新的并将其drawable设置为与第一个ImageView相同.