在我的代码中,我有一个包含子视图的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;
}
});
事实是,早期构建视图会出现在所有子视图中,而不仅仅是被拖动的视图。
答案 0 :(得分:0)
我相信我的问题的答案是Action Drag Started针对支持拖放布局的所有视图触发,而Action Drop适用于接收放置的视图。