2011-06-04 63 views
16

我有以下情況:MotionEvent傑蒂()和信息getX()返回不正確的值

我有連續的ImageView和TextView的一個自定義的ListView。 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邊界之上)。

希望,我解釋清楚..

任何想法如何得到這個座標相對於屏幕尺寸是多少? 謝謝。

+0

另請參見[MotionEvent.getRawX和MotionEvent.getX之間的區別](http://stackoverflow.com/questions/20636163/difference-between-motionevent-getrawx-and-motionevent-getx) – Suragch 2016-09-20 07:23:22

回答

43

嘗試使用getRawX()getRawY()而不是getX()getY()

+0

它有幫助,謝謝 – glodos 2011-06-04 15:36:48

+0

@kcoppock你節省了ma小時的時間.. Thankyou非常親愛的...... – 2015-08-22 09:17:06

2

getX()和getY()分別返回調用它的視圖的值。 因此 比方說,

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

然後你就可以得到的x,y使用

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

在這裏,我假設你已經設置的IMV的onTouchListener。

+0

不錯。謝謝。 – hariszhr 2017-04-09 21:00:10

相關問題