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

前端之家收集整理的这篇文章主要介绍了Android setX()和setY()表现得很奇怪前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试动态创建然后在 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);

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

猜你在找的Android相关文章