我是Android的新手,我正在制作一个带有垂直线性布局的应用程序,屏幕底部有一个屏幕上的imageView列表。其中每一个都可以拖动到屏幕的主要部分,但是,如果我拖动布局最右侧的一个图像视图,它会将视图放在实际放置点的左侧。奇怪的是,如果我尝试拖动线性布局中的第一个图像视图(左侧的那个),它将落在我放下的位置。
我的onDrag和onTouch听众......
class MyDragListener implements OnDragListener {
@Override
public boolean onDrag(View v, DragEvent event) {
float X = event.getX();
float Y = event.getY();
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
break;
case DragEvent.ACTION_DRAG_ENTERED:
break;
case DragEvent.ACTION_DRAG_EXITED:
break;
case DragEvent.ACTION_DROP:
View view = (View) event.getLocalState();
ViewGroup owner = (ViewGroup) view.getParent();
owner.removeView(view);
container = (RelativeLayout) v;
container.setLayoutParams(findViewById(R.id.drawingbackground).getLayoutParams());
container.addView(view);
view.setX(X-(view.getWidth()/2));
view.setY(Y-(view.getHeight()/2));
view.setVisibility(View.VISIBLE);
break;
case DragEvent.ACTION_DRAG_ENDED:
default:
break;
}
return true;
}
}
和OnTouch ......
final class MyTouchListener implements OnTouchListener {
public boolean onTouch(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
ClipData data = ClipData.newPlainText("", "");
DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
view.startDrag(data, shadowBuilder, view, 0);
return true;
} if(motionEvent.getAction()== MotionEvent.ACTION_UP){
view.performClick();
}
return false;
}
}
非常感谢任何帮助!
答案 0 :(得分:0)
更改你的xml.Use相对布局而不是LinearLayout并修复它们的高度和宽度。它会工作得很好。