2011-08-10 7 views
1

私の活動では、私はOnTouchListenerを持つScrollViewを持っています。 このscrollViewには、いくつかのimageViewが含まれています。onTouchイベントの問題

問題は、imageViewに触れると、OnTouchListenerのonTouch(view、event)関数が呼び出されますが、viewパラメータはimageViewではなくscrollViewです。それは普通ですか? パラメータで実際に触れたビューをどのようにすることができますか?

編集:

ScrollView scroll = (ScrollView)findViewById(R.id.affichagefiche_scrollview); 
touchListener = new OnTouchScrollListener("---"); 
scroll.setOnTouchListener(touchListener); 
private class OnTouchScrollListener implements OnTouchListener{ 
    public boolean onTouch(View view, MotionEvent event) { 
     Log.d("activity", "onTouch: "+view.toString()); 
    } 
} 

ログパラメータのビューは常にscrollViewであることを私に伝え、いない子

+0

あなたのコードを更新できます –

答えて

0

はimageViewsにOnTouchListener結合するかのgetXでそれを行うみてください、のgetYは

+0

imageViewを拡張してカスタムimageViewを作成し、onTouch(event)メソッドをオーバーライドしようとしましたが、scrollViewOnTouchListenerは常に以前に呼び出されました。 実際、scrollViewOnTouchListenerのパラメータのビューは常にスクロールビューであり、子ではないため、imageViews配列を繰り返して、Region.contains(x、y)メソッドを使用してimageViewに触れたかどうかをテストします。しかし、私がスクロールしているとき、イベントのgetX()とget(Y)は、スクロールビューの実際のxとyではなく、常にxとyを画面に表示します:/ – Imotep

0
をCOORDS

setOnItemClickListenerを使用してScrollViewの個別のimageViewを取得する方がより簡単になります。次に、onItemClick(AdapterView親ビュービュー、int位置、long ID)を使用します。

+0

ここではアダプターのリストビューではありません – Imotep

+0

この行は、 "scroll.setOnTouchListener(touchListener);"子ではなくscrollViewでsetOnTouchListenerを設定します。イメージビューの数が限られている場合はonClickLisenerを使用し、それ以外の場合はgridViewを使用します。水平グリッドビューまたは垂直グリッドビューを使用できます。 – jainal

+0

問題は、指の動きを追跡するために私のscrollVIewにonTOuchListenerが必要なことです。スクロールでontouchListenerを使用し、imageViewsでonClickListenerを使用すると、そのクリックは子プロセスとACTION_DOWNイベントで処理されません。 – Imotep