我正在尝试动态创建然后在 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 - 在 api 8 中使用 view.setX() 和 setY,如果您搜索过,还有另一种解决方案,即使在 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);
那里有更多信息。我希望这有帮助
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)