繁体   English   中英

MotionEvent GetY() 和 getX() 返回不正确的值

[英]MotionEvent GetY() and getX() return incorrect values

我有以下情况:

我有一个自定义 ListView,其中 ImageView 和 TextView 连续。 ImageView 有一个 onTouchListener,它调用我的 onTouch 方法。 以下是其中的一些内容:

if (event.getAction()==MotionEvent.ACTION_MOVE) {
    layout.leftMargin = (int) event.getX() - dragIcon.getWidth()/2;         
    layout.topMargin = (int) event.getY() - dragIcon.getHeight()/2;
    //Log.d("Tag", "Pozycja: " +  event.getX() +", "+  event.getY());
}
dragIcon.setLayoutParams(layout);

当检测到移动时,我正在显示新图像(不是在 ListView 中),并且我开始根据 x 和 y 坐标移动它。

问题是,getX 和 getY 返回相对于列表中 ImageView 的位置,而不是整个 ListView(我认为是这样)。 因此,当我在中间触摸一个项目并向上滑动手指时,getY 返回负值(高于 ImageView 边界)。

希望,我解释清楚了..

任何想法如何获得相对于屏幕尺寸的坐标? 谢谢你。

尝试使用getRawX()getRawY()而不是getX()getY()

getX() 和 getY() 返回与调用它的视图相关的值。 因此,让我们说,

ImageView imV = (ImageView)findViewById(R.id.image_view);

然后你可以得到 x,y 使用

x = imV.getX() + event.getX();
y = imV.getY() + event.getY();

这里我假设你已经在 imV 上设置了 onTouchListener。

这是完整的答案。 这将捕获临时变量上的最后 3 个事件: https://stackoverflow.com/a/54438485/1931228

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM