2017-10-07 26 views
1

我有一个滚动型,它包含一个ViewPager和一个RecyclerView和我已经申请计时器自动滚动viewpager内容,我想是当我查看传呼机点击保存下来它不想执行自动滚动任务,并为此我使用下面的代码。我已经ViewPager相关的问题在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"); 
      } 
     } 
    } 

,我想要的是,当我滚动viewpager水平想让它滚动,但它不工作当我点击viewpager然后滚动它垂直的滚动型垂直滚动的,但我就不能能检测MotionEvent.ACTION_UP并且由于我能不能设置canScroll =真进行自动滚屏viewpager内容和这种布局是片段

所以请有人帮我。

enter image description here

+0

尝试嵌套的滚动视图 –

+0

我的实际问题无线th查看寻呼机。 –

回答

0

下面的代码使用

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); 
    } 

onTouch监听器是与您的

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; 

      } 


     }); 

在红米手机设备测试 评论,如果有任何疑问

+0

它不是我所需要的。 –