2011-05-16 2 views
0

J'ai deux vues (une dérivée de SurfaceView une autre de ImageView) chacune encapsulée dans une disposition de trame, et chaque vue implémente un ontouchlistener, qui est défini comme l'ontouchlistener de la vue elle-même. Ces deux vues (mises en page) n'ont pas d'intersection sur l'écran.Portée de ontouchlistener

Cependant, je n'arrive pas à faire fonctionner ces deux écouteurs ensemble. Par exemple, s'il y a un ACTION_DOWN sur la vue A (écouteur A), alors l'écouteur B ne réagira pas (pas les événements envoyés à B même le mouvement suivant est sur la vue B), seul l'auditeur A réagit jusqu'à ce qu'il n'y ait plus toucher les événements. C'est-à-dire que même l'auditeur A n'est défini que comme ontouchlistener pour la vue A, il gère tous les événements sur l'écran entier et les autres écouteurs sont inhibés.

C'est étrange pour moi, des explications? Est-ce que deux ontouchlisteners peuvent exister ensemble à l'écran?

+0

Je ne suis pas sûr que je reçois le problème mais, après une ACTION_DOWN, suite à des événements (comme ACTION_MOVE) jusqu'à ce que ACTION_UP ou ACTION_CANCEL sont déviés directement à ce point de vue, ce qui est à quel point Android fonctionne. Voir [ici] (http://stackoverflow.com/questions/5654311/how-do-i-keep-a-touch-event-keep-its-focus-on-the-widget-it-was-started-in/5654672 # 5654672) – bigstones

+0

@bigstones: très utile. Mais cette fonctionnalité est un peu ennuyeuse pour moi ... – Neo

Répondre

0

œuvres android comme décrit here

0

Bien sûr, ils peuvent, comme deux boutons avec leurs propres auditeurs. Essayez de mettre les auditeurs à votre point de vue:

frameLayout.setOnClickListener(); 
imageView.setOnClickListener(); 

De cette façon, ils ne devraient réagir aux événements à venir à leurs propres auditeurs. J'espère que cela t'aides.

+0

J'ai essayé mais ça ne marche pas pour moi, merci tout de même ~ – Neo