2011-02-28 3 views
3

J'ai besoin d'imbriquer quelques écouteurs tactiles. Par exemple, j'ai un ViewGroup qui aura les écouteurs suivants: onItemClick, onLongItemClick et onTouch.EV == move.Écouteurs tactiles Android?

Les éléments à l'intérieur du groupe de vues auront également un onClick.

Dans mes tests, les deux groupes d'écouteurs fonctionnent indépendamment, mais pas de manière interdépendante. Y a-t-il un moyen de relier les groupes d'auditeurs?

Merci, ~ Aedon

Répondre

3

je ne sais pas, mais peut-être que vous pouvez envoyer l'événement touche de la vue racine à son point de vue de l'enfant (en commençant par l'activité)

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    if (ChildView.dispatchTouchEvent(event)) 
     return true; 
    else 
     return false; 
} 

après que l'utilisateur a cliqué sur le bouton, envoyer l'événement contact retour à la vue racine.

+0

Ah, fantastique je vais l'essayer ici dans un instant, merci beaucoup! – AedonEtLIRA

2

Tous les événements sont propagées de la racine aux vues de l'enfant. Si une vue ne veut pas gérer un événement, elle le passe à ses vues enfant. Si une vue consomme un événement tel qu'un clic sur un groupe ViewGroup, vous pouvez soit le laisser s'écouler ou le bloquer. Habituellement, retourner false à partir du rappel d'événement indique que l'événement n'a pas été géré, et retourner vrai indique que l'événement a été géré et ne sera pas donné à d'autres vues.

Disons que vous avez un bouton dans un ViewGroup. Si vous appuyez sur le bouton, ViewGroup recevra d'abord l'événement, il peut choisir de ne pas passer l'événement à ses enfants, auquel cas le bouton ne répondra pas au clic.

+0

Droite; C'est ce que j'ai lu dans l'article des développeurs. Mais ça ne fait pas vraiment ce dont j'ai besoin. Il doit fonctionner à rebours, si c'est possible. J'ai besoin de savoir que l'utilisateur clique sur le bouton avant d'autoriser le parent ViewGroup à exécuter ses écouteurs. – AedonEtLIRA

+0

Vous ne pouvez pas simplement. La vue racine reçoit toujours les événements en premier. Croyez-moi, ne passez pas votre temps là-dessus. – Veeresh

+0

Je vois, et accepte que la vue racine recevra toujours le premier écouteur. Mais je pense qu'il y a un travail que je ne connais pas et que je ne peux pas réaliser. Si vous pensez à un widget sur un écran de lancement, il a quelques options tactiles de base: onClick et onLongClick. Mais si vous deviez regarder des widgets spécifiques, tels que le widget reddit ou un widget multimédia, ils contiennent également des boutons dans le widget. La pression sur le bouton est prioritaire pour le widget mais est toujours capable d'être cliquée et/ou déplacée sur l'écran. C'est ce que j'espère accomplir. – AedonEtLIRA

Questions connexes