2011-08-10 1 views
1

Dans mon activité, j'ai un ScrollView avec un OnTouchListener. Ce scrollView contient des imagesView. Le problème est que lorsque je touche une imageView, la fonction onTouch (vue, événement) de l'OnTouchListener est appelée, mais le paramètre view est le scrollView au lieu de l'imageView. Est-ce normal? Comment puis-je avoir la vue réelle touchée en paramètre?Problème d'événement onTouch

modifier:

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()); 
    } 
} 

Les journaux me dit que le point de vue des paramètres est toujours le ScrollView, pas un enfant

+0

pouvez-vous mettre à jour votre code –

Répondre

0

essayer bind OnTouchListener à imageViews ou le faire par getX, getY COORDS

+0

J'ai essayé d'étendre imageView pour avoir un imageView personnalisé et de surcharger la méthode onTouch (événement) mais le scrollViewOnTouchListener est toujours appelé avant. En fait, comme la vue sur le paramètre de scrollviewOnTouchListener est toujours la vue défilante et non un enfant, je parcourt mon tableau imageViews pour tester si j'ai touché une imageView avec la méthode Region.contains (x, y). Mais quand je défile vers le bas, les getX() et get (Y) de l'événement me donnent toujours le x et le y sur l'écran, pas le vrai x et y dans la vue de défilement:/ – Imotep

0

il sera plus facile si vous utilisez setOnItemClickListener pour obtenir imageView individuelle de ScrollView.Puis utilisez onItemClick (parent AdapterView, vue Voir, position int, ID long).

+0

qui fonctionne seulement si je suis dans une listeVoir avec un adaptateur, ce qui n'est pas le cas ici – Imotep

+0

Cette ligne dit que "scroll.setOnTouchListener (touchListener);" Vous avez défini setOnTouchListener dans scrollView, pas dans child.So si vous avez un nombre limité d'imageView l'utilisation onClickLisener sinon utilisez gridView.vous pouvez utiliser gridView horizontal ou gridView vertical. – jainal

+0

le problème est que j'ai besoin du onTOuchListener dans mon scrollVIew pour suivre le mouvement des doigts. Si j'utilise un ontouchListener sur le scroll et un onClickListener sur l'imageViews, le clic n'est pas géré par l'enfant et l'événement ACTION_DOWN non plus. – Imotep