在所有视图上调用ACTION_DRAG_STARTED

时间:2018-01-26 07:45:18

标签: android drag-and-drop

在我的代码中,我有一个包含子视图的LinearLayout,以及创建每个子视图(通过代码而不是xml)我设置了setOnLongClickListener和setOnDragListener,并且它有一个可怕的副作用,当onDrag被调用时对于子视图,案例DragEvent.ACTION_DRAG_STARTED:在所有子视图上调用。那是为什么?

    childView.setOnDragListener(new View.OnDragListener() {
        @Override
        public boolean onDrag(final View aChildView, DragEvent event) {

            switch (event.getAction()) {
                case DragEvent.ACTION_DRAG_STARTED:
                    Log.d("++++", "Drag Started");
                    aChildView.addView(Early Made up view);
                    break;

                case DragEvent.ACTION_DRAG_ENTERED:

                    break;

                case DragEvent.ACTION_DRAG_EXITED:
                    childView.setBackground(new ColorDrawable(Color.TRANSPARENT));
                    break;

                case DragEvent.ACTION_DROP:
                    childView.setBackground(new ColorDrawable(Color.TRANSPARENT));// In case it got dropped on itself.

                    break;

                case DragEvent.ACTION_DRAG_ENDED:

                    break;

                default:
                    return false;
            }
            return true;
        }

    });

事实是,早期构建视图会出现在所有子视图中,而不仅仅是被拖动的视图。

1 个答案:

答案 0 :(得分:0)

我相信我的问题的答案是Action Drag Started针对支持拖放布局的所有视图触发,而Action Drop适用于接收放置的视图。

https://stackoverflow.com/a/13301939/5851265