0

J'ai un ViewPager qui fait défiler les emails, il demande un email quand l'utilisateur arrête de défiler pendant un court laps de temps, avec un planificateur.Désactiver juste en tapant sur ViewPager

Pendant cette pause, je ne souhaite pas que les boutons d'espace réservé figurant sur la page en cours de chargement soient cliqués. Au cours de cet événement de pagination, je voudrais autoriser le balayage, car l'utilisateur peut continuer à glisser vers un autre e-mail mais désactiver l'envoi sur l'expéditeur/destinataire ou les éléments interactifs dans l'e-mail qui sont toujours réservés et ne mèneront nulle part.

J'ai essayé de faire quelque chose comme cela jusqu'à présent sur le téléavertisseur de vue:

// Set a simple gesture to handle our click request, allowing everything else 
final GestureDetector.SimpleOnGestureListener dsl_simpleDetector = new GestureDetector.SimpleOnGestureListener() { 
    public boolean onSingleTapUp (MotionEvent motionEvent) { 
     // Don't want to do anything with this if timer is running 
     final ExchangeEmailActivity ds_act = (ExchangeEmailActivity) getActivity(); 
     if (ds_act.dsc_timer != null) { // We're waiting for the page to load still 
      return false; // Handle it by doing nothing 
     } else { 
      return true; // Let it be handled as necessary 
     } 
    } 
}; 

// The listener will call the simple gesture above to handle it 
vp_pager.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View view, MotionEvent motionEvent) { 
     return (dsl_simpleDetector.onSingleTapUp(motionEvent)); 
    } 
}); 

Répondre

0

si vous ne voulez pas que vos utilisateurs cliquent sur un bouton ->désactiver le bouton. Il est de mauvaise conception de "pirater" l'écouteur tactile pour empêcher un utilisateur de cliquer sur les boutons.

+0

Il n'est pas viable d'interagir avec les boutons eux-mêmes, ils font partie d'un système plus large, le piratage serait bien pire conception. Le ViewPager est le système le moins profond de tous, et la fonctionnalité ne doit concerner que ce ViewPager particulier, aucun autre. – Ben

+0

Il se peut que ViewPager soit le système le moins profond. MAIS vous devez le voir de l'utilisateur. S'il y a des boutons activés (que vous empêchez de cliquer) dans votre application, un utilisateur essaiera de les cliquer tôt ou tard et rien ne se passera. Et cela ne devrait jamais arriver. – IIIIIIIIIIIIIIIIIIIIII

+0

Dans ce cas, il semble acceptable de le faire puisque cette fonctionnalité de désactivation ne devrait durer qu'environ 200 millisecondes, un message toast pourrait être fourni lors de l'interception de cette fonctionnalité ayant ViewPager informer l'utilisateur d'attendre la fin du chargement. – Ben