Android setX()和setY()表现得很奇怪

use*_*199 8 android imageview setx

我正在尝试动态创建然后在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);
    }
}
Run Code Online (Sandbox Code Playgroud)

在ACTION_MOVE上,即使x和y位置值保持不变,也会移动图像.图像的父级保持不变.大小保持不变.如果我得到x和y值,它仍然会说206,但它不再放在(206,206)活动上.我很遗憾为什么会这样.除了物理上改变位置外,我找不到任何迹象表明图像已被改变.

hyp*_*rum 15

真的,这不应该发生.或者,尝试设置另一个变量并将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);
Run Code Online (Sandbox Code Playgroud)

那里有更多的信息.我希望这有帮助