首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MotionEvent GetY()和getX()返回的值不正确

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

Stack Overflow用户
提问于 2011-06-04 22:11:42
回答 3查看 21.3K关注 0票数 19

我有以下情况:

我有一个自定义的ListView,其中ImageView和TextView在一行中。ImageView有一个onTouchListener,wchich调用我的onTouch方法。下面是其中的几行代码:

代码语言:javascript
复制
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边界之上)。

希望,我解释得很清楚..

你知道如何获得相对于屏幕尺寸的坐标吗?谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-04 23:23:14

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

票数 49
EN

Stack Overflow用户

发布于 2017-04-06 16:42:51

getX()和getY()返回与被调用的视图对应的值。因此,让我们说,

代码语言:javascript
复制
ImageView imV = (ImageView)findViewById(R.id.image_view);

然后,您可以使用以下命令获得x,y

代码语言:javascript
复制
x = imV.getX() + event.getX();
y = imV.getY() + event.getY();

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

票数 6
EN

Stack Overflow用户

发布于 2019-01-30 18:36:37

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6237200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档