我正在尝试动态创建然后在
Android活动中移动图像.但是,setX()和setY()方法似乎无法正常工作.它在首次创建和放置图像时正确设置图像的位置,但任何更新图像的尝试都会导致图像放置在错误的位置.例如,图像移动以下代码:
ImageView image; RelativeLayout layout = (RelativeLayout)findViewById(R.id.activity_this); if(action == MotionEvent.ACTION_DOWN){ image = new ImageView(MyClass.this); layout.addView(image,width,height); image.setX(206); image.setY(206); } else if(action == MotionEvent.ACTION_MOVE){ if(image != null){ image.setX(206); image.setY(206); } }
在ACTION_MOVE上,即使x和y位置值保持不变,也会移动图像.图像的父级保持不变.大小保持不变.如果我得到x和y值,它仍然会说206,但它不再放在(206,206)活动上.我很遗憾为什么会这样.除了物理上改变位置之外,我找不到任何迹象表明图像已被改变.
解决方法
真的,这不应该发生.或者,尝试设置另一个变量并将x和y设置为它,或者获取x并获得y并为每个变量添加0以获得相同的位置.
如Android – Use of view.setX() and setY in api 8所述,如果你已经搜索过,那么另一个解决方案甚至可以在api 8之前运行.
LayoutParams的工作原理如下 –
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); //WRAP_CONTENT param can be FILL_PARENT params.leftMargin = 206; //XCOORD params.topMargin = 206; //YCOORD childView.setLayoutParams(params);
那里有更多的信息.我希望这有帮助