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性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...