如果未正确放置,Android拖放文本视图将丢失
我有一个文本视图,它出现在空的线性布局上面。每次我必须将textview拖放到linearlayout中,否则它就会丢失。我想能够计数器,以防用户没有完成正确的下降文本视图仍然存在那里。以下是我的TouchListener代码:如果未正确放置,Android拖放文本视图将丢失,android,drag-and-drop,ontouchlistener,Android,Drag And Drop,Ontouchlistener,我有一个文本视图,它出现在空的线性布局上面。每次我必须将textview拖放到linearlayout中,否则它就会丢失。我想能够计数器,以防用户没有完成正确的下降文本视图仍然存在那里。以下是我的TouchListener代码: private final class MyTouchListener implements OnTouchListener { public boolean onTouch(View view, MotionEvent motionEvent) {
private final class MyTouchListener implements OnTouchListener {
public boolean onTouch(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
ClipData data = ClipData.newPlainText("", "");
View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(
view);
view.startDrag(data, shadowBuilder, view, 0);
view.setVisibility(View.INVISIBLE);
return true;
} else {
return false;
}
}
}
这是我给DragListener的代码
class MyDragListener implements View.OnDragListener {
Drawable enterShape = getResources().getDrawable(
R.drawable.shape_droptarget);
Drawable normalShape = getResources().getDrawable(R.drawable.shape);
@Override
public boolean onDrag(View v, DragEvent event) {
int action = event.getAction();
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
// do nothing
break;
case DragEvent.ACTION_DRAG_ENTERED:
v.setBackgroundDrawable(enterShape);
break;
case DragEvent.ACTION_DRAG_EXITED:
v.setBackgroundDrawable(normalShape);
break;
case DragEvent.ACTION_DROP:
// Dropped, reassign View to ViewGroup
View view = (View) event.getLocalState();
ViewGroup owner = (ViewGroup) view.getParent();
owner.removeView(view);
LinearLayout container = (LinearLayout) v;
container.addView(view);
view.setVisibility(View.VISIBLE);
break;
case DragEvent.ACTION_DRAG_ENDED:
v.setBackgroundDrawable(normalShape);
default:
break;
}
return true;
}
}
我编辑了DrageEvent.ACTION\u DRAG\u的案例,最终得到了我想要的解决方案
case DragEvent.ACTION_DRAG_ENDED:
View view = (View) event.getLocalState();
view.setVisibility(View.VISIBLE);
v.setBackgroundDrawable(normalShape);
break;