我试图动态创建然后在Android Activity 中移动图像。但是,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,但不再放在 Activity 上的(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);

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

10-06 14:00