2017-10-07 4 views
1

J'ai une ScrollView et contiennent un ViewPager et un RecyclerView et je l'ai appliqué minuterie pour le défilement automatique du contenu de viewpager et je veux est quand je clique sur téléavertisseur vue qu'il détient vers le bas, il ne veut pas effectuer de tâche de défilement automatique et pour cela j'ai utilisé le code ci-dessous.Je ViewPager problème lié dans Android

viewPager.setOnTouchListener(new View.OnTouchListener() { 

     @Override 
     public boolean onTouch(View view, MotionEvent event) { 
      if (event.getAction() == MotionEvent.ACTION_DOWN) { 
       canScroll = false; 
       Log.e("canScroll", "ACTION_DOWN = " + canScroll); 
      } 

      if (event.getAction() == MotionEvent.ACTION_UP) { 
       canScroll = true; 
       Log.e("canScroll", "ACTION_UP = " + canScroll); 
      } 

      return true; 
     } 
    }); 

    public void pageSwitcher(int seconds) { 
     timer = new Timer(); // At this line a new Thread will be created 
     timer.scheduleAtFixedRate(new RemindTask(), 0, seconds * 1000); // delay 
    } 

    // this is an inner class... 
    class RemindTask extends TimerTask { 
     @Override 
     public void run() { 
      try { 
       getActivity().runOnUiThread(new Runnable() { 
        public void run() { 
         Log.e("canScroll", "RemindTask = " + canScroll); 
         if (canScroll) { 
          if (currentPage < maxPage) { 
           viewPager.setCurrentItem(currentPage); 
           currentPage = currentPage + 1; 
          } else { 
           viewPager.setCurrentItem(currentPage); 
           currentPage = 0; 
          } 
         } 
        } 
       }); 
      } catch (Exception e) { 
       Log.e("Unwanted", "RemindTask- NullPointerException"); 
      } 
     } 
    } 

Et je veux est quand je défiler viewpager horizontalement, il veut faire défiler mais il ne fonctionne pas et aussi lorsque je clique sur viewpager et puis faites défiler verticalement le ScrollView défile verticalement mais je ne peux pas en mesure pour détecter MotionEvent.ACTION_UP et en raison de ce que je ne peux pas en mesure de mettre canScroll = true pour effectuer autoscroll contenu viewpager et cette mise en page est en Fragment.

Alors s'il vous plaît quelqu'un m'aider.

enter image description here

+0

essayez imbriqué ScrollView –

+0

Mon réel problème wi Voir le téléavertisseur. –

Répondre

0

utilisation ci-dessous le code

public void pageSwitcher() { 
     final Handler handler=new Handler(); 
     Runnable runnable=new Runnable() { 
      @Override 
      public void run() { 

       getActivity().runOnUiThread(new Runnable() { 
        public void run() { 
         Log.e("canScroll", "RemindTask = " + canScroll); 
         if (canScroll) { 
          if (currentPage < maxPage) { 
           viewPager.setCurrentItem(currentPage); 
           currentPage++; 
          } else { 
           viewPager.setCurrentItem(currentPage); 
           currentPage = 0; 
          } 
         } 
        } 
       }); 
       handler.postDelayed(this,1000); 
      } 
     }; 
     handler.postDelayed(runnable,1000); 
    } 

auditeur OnTouch est identique à celle de vos

viewPager.setOnTouchListener(new View.OnTouchListener() { 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       if (event.getAction() == MotionEvent.ACTION_DOWN) { 
        canScroll = false; 
        Log.e("canScroll", "ACTION_DOWN = " + canScroll); 
       } 

       if (event.getAction() == MotionEvent.ACTION_UP) { 
        canScroll = true; 
        Log.e("canScroll", "ACTION_UP = " + canScroll); 
       } 

       return true; 

      } 


     }); 

testé dans le dispositif redmi commentaire si toute requête

+0

Ce n'est pas celui que j'ai demandé. –