我尝试在我的应用程序中实现拖放操作,我从我的Activity中拖动视图,我想将它放在拖动开始时创建的新片段中,但是不能在片段中使用拖动侦听器,我在我的活动中使用下一个代码:
findViewById(R.id.button1).setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
vibra();
ClipData data = ClipData.newPlainText("", "");
DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
view.startDrag(data, shadowBuilder, view, 0);
FragmentShare share = new FragmentShare(getSupportFragmentManager());
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(R.id.principal, share);
ft.addToBackStack(null);
ft.commit();
return false;
}
});
我的片段中的代码是下一个:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View vv = inflater.inflate(R.layout.fragment_share, container, false);
vv.findViewById(R.id.button1).setOnDragListener(new OnDragListener() {
@Override
public boolean onDrag(View v, DragEvent event) {
int action = event.getAction();
switch (action) {
case DragEvent.ACTION_DRAG_STARTED:
break;
case DragEvent.ACTION_DRAG_ENTERED:
v.setEnabled(false);
break;
case DragEvent.ACTION_DRAG_EXITED:
v.setEnabled(true);
break;
case DragEvent.ACTION_DROP:
manager.popBackStackImmediate();
break;
case DragEvent.ACTION_DRAG_ENDED:
manager.popBackStackImmediate();
break;
default:
break;
}
return true;
}
});
return vv;
}
但视图状态永远不会改变,并且在删除视图时不会返回。 我不知道这是否可能,或者有其他方法来实现这个,请告诉我这是什么。
感谢。
的Pd。抱歉我的英文。
答案 0 :(得分:0)
如果你的应用程序的min sdk版本是11,那么这可行,
我们为视图的X,Y坐标,宽度和高度设置了getter和setter。 使用这些方法,我们可以在整个屏幕上移动视图。
所以,我要完成你的任务是,
1)我开始在视图的onTouchListener中更新视图的x位置。 2)一旦我开始,我同时创建一个片段。 3)当我的视图到达片段时,我将完成()活动并将相同的布局添加到片段。
这样我们就可以了。
希望这会有所帮助..