示例代码:
textView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
ClipData.Item item = new ClipData.Item((CharSequence) view.getTag());
String[] mimeTypes = {ClipDescription.MIMETYPE_TEXT_PLAIN};
ClipData dragData = new ClipData(view.getTag().toString(), mimeTypes, item);
View.DragShadowBuilder myShadow = new View.DragShadowBuilder(view);
view.startDrag(dragData, myShadow, null, 0);
return true;
}
});
textView.setOnDragListener(new View.OnDragListener() {
@Override
public boolean onDrag(View v, DragEvent event) {
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
Log.i(TAG,"Drag event started");
break;
case DragEvent.ACTION_DRAG_ENTERED:
Log.i(TAG,"Drag event entered into "+v.toString());
break;
case DragEvent.ACTION_DRAG_EXITED:
Log.i(TAG,"Drag event exited from "+v.toString());
break;
case DragEvent.ACTION_DROP:
Log.i(TAG,"Dropped");
break;
case DragEvent.ACTION_DRAG_ENDED:
Log.i(TAG,"Drag ended");
break;
default:
break;
}
return true;
}
});
如果 onDragListener 不起作用,可以检查控件是否设置为可见。如果控件被设置为不可见,onDragListener 事件就不会被触发。
如果 onDragListener 事件仍然不起作用,可以检查控件的父类是否也设置了 onDragListener,如果父类设置了 onDragListener 事件,就有可能影响子控件的 onDragListener 事件。
以上解决方法只是一些建议,具体解决方法可能因每个项目的实际情况而有所不同