I have several ImageViews, and I want the onTouch event to fire for each of them when I drag my finger across multiple images. At present the onTouch event is only firing on the first ImageView (or actually on multiple ImageViews but only when multitouching the screen). Pseudo code:
for(int i=0;i<5;i++){
ImageView img=new ImageView(this);
LinearLayout.LayoutParams layoutParams=new LinearLayout.LayoutParams(width,height);
img.setImageResource(R.drawable.cell);
img.setOnTouchListener(this);
mainLayout.addView(img,layoutParams);
}
...
public boolean onTouch (View v, MotionEvent event){
Log.d("MY_APP","View: " + v.getId());
return false;
}
Am I barking up completely the wrong tree?
Thanks for any help.
Yes, I had the same problem. The answer was to create a touch listener for the layout I embed my ImageViews in and then to calculate the X, Y position to know above which of my View am I. OnTouchListener is called only for the view it is connected to. I mean if it is called for an ImageView it won't fire until you start your motion onto that ImageView, as far as I know.
I think you need to use move event rather than touch event and compare getX and getY with the location of your views.