2016-06-04 1 views
2

Je sais qu'il existe plusieurs réponses qui décrivent comment verrouiller un ViewPager.Désactiver ViewPager défilement lorsque l'enfant spécifique a le focus

Mais je veux que mon ViewPager ne puisse défiler que si le toucher ne touche pas un enfant en particulier. Alors comment puis-je "filtrer" quelles vues enfants sont touchées?

Code

exemple de la façon dont je veux verrouiller mon ViewPager:

for (Integer resource:mResources) { 
     if(resource.intValue()==view.getId()){ 
      touchTriggeredOnView(view.getId()); 
     } 
    } 

La raison pour laquelle je veux faire est que j'ai une vue personnalisée qui doit détecter des gestes fling. Cette vue personnalisée est un enfant d'un Fragment et le Fragment est un enfant du ViewPager.

Ainsi: ViewPager ->Fragment ->CustomView. Je peux détecter le DOWN mais pas l'événement FLING à l'intérieur de mon CustomView.

Je pense que le ViewPager capture l'événement FLING -> mauvaise chose.

J'espère que ma question est suffisamment claire.

Répondre

2

onTouch et gesture listeners dans Android ont des valeurs de retour booléennes qui indiquent si l'événement (toucher, fling, clic) est consommé ou non. ViewPager consomme probablement l'événement "Fling", mais vous pouvez surcharger onTouch, l'écouteur gestuel dans ViewPager et renvoyer false - ne consommant pas d'événement tactile et ne le transmettant pas à votre vue personnalisée.