【发布时间】:2013-12-03 20:12:14
【问题描述】:
我是 android 编程新手,我正在尝试将 textview 拖到 edittext 中。
我创建了一个 OnTouchListener,它在 textview 中选择文本并将其存储为 ClipData。
OnTouchListener:
item.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
ClipData data = ClipData.newPlainText("text", str);
DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
view.startDrag(data, shadowBuilder, view, 0);
}
return true;
}
});
然后我想将此数据附加到 EditText 视图中。为此,我为 EditText 实现了一个 OnDragListener
OnDragListener:
TextStage.setOnDragListener(new OnDragListener(){
@Override
public boolean onDrag(View v, DragEvent event) {
switch(event.getAction())
{
case DragEvent.ACTION_DRAG_STARTED: break;
case DragEvent.ACTION_DROP: ClipData.Item item = event.getClipData().getItemAt(0);
CharSequence paste = item.getText();
v.append(paste.toString());
break;
case DragEvent.ACTION_DRAG_ENDED: break;
case DragEvent.ACTION_DRAG_EXITED: break;
default: break;
}
return false;
}
});
问题:
当我完成拖动时,文本视图的两个实例被附加到编辑文本中。
例子:
TextView 中的字符串:“我要拖动这个”
放入EditText后:“我要拖这个我要拖这个”
我不明白为什么应该有两个drop,因为我已经为edittext覆盖了onDrag。 我还处理了所有 DragEvent 操作。
编辑:查看日志后,即使删除 DragListener 后我也会看到此消息
11-20 07:30:04.885: I/ViewRootImpl(3518): Reporting drop result: true
了解 ViewRootImpl 可能是什么?
【问题讨论】:
标签: android drag-and-drop