gpt4 book ai didi

Android setX() 和 setY() 表现怪异

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:54:33 25 4
gpt4 key购买 nike

我正在尝试在 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);

那里有更多信息。希望对您有所帮助

关于Android setX() 和 setY() 表现怪异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16782705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com