19

私は次の状況にあります:

ImageViewとTextViewが連続したカスタムListViewがあります。ImageViewにはonTouchListenerがあり、wchichは私の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が、ListView全体ではなく、リスト内のImageViewを基準にした位置を返すことです(私はそう思います)。したがって、中央のアイテムに触れて指を上にスワイプすると、getYは負の値(ImageView境界より上)を返します。

願わくば、はっきりと説明しました。

画面サイズに対してこの座標を取得する方法はありますか?ありがとうございました。

4

3 に答える 3

49

getRawX()andgetRawY()の代わりにgetX()andを使用してみてくださいgetY()

于 2011-06-04T15:23:13.743 に答える
6

getX() および getY() は、呼び出されたビューに対応する値を返します。したがって、言いましょう、

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

次に、使用してx、yを取得できます

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

ここでは、imV で onTouchListener を設定していると仮定します。

于 2017-04-06T08:42:51.380 に答える