2013-02-21 36 views
3

我有一个ViewPager向监听器:安卓ViewPager - 检测页面滚动状态

viewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 

     @Override 
     public void onPageSelected(int arg0) { 

     } 

     @Override 
     public void onPageScrolled(int position, float positionOffset, 
       int positionOffsetPixels) { 
      if (position == 0) { 
       tv.setText("first Item"); 
      } else 
       tv.setText(titleStringArray[position]); 

     } 

     @Override 
     public void onPageScrollStateChanged(int arg0) { 

     } 
    }); 

我需要什么:电视是ViewPager高于TextView,目前文本作为用户移动的页面,尽快改变(即使很少的动作登记)。如果页面向左或向右移动了50%或更高,我只想更改文本。有什么建议么?

+0

在我看来,你试图在你的网页上做一些类型的标题。那么为什么不使用PagerTitleStrip? http://developer.android.com/reference/android/support/v4/view/PagerTitleStrip.html它可以使你更容易很多东西。 Ps .:我作为评论发布,因为我知道我没有回答你的问题,但提供了可能的选择。 – Budius 2013-02-21 12:35:01

+0

谢谢。是的,我知道titleStrip,但我的ViewPager只有60dp x 200dp,所以在这种情况下,如果我使用TitleStrip或者仅仅是一个TextView,这并不重要 – Droidman 2013-02-21 13:11:34

回答

3

我解决了如下,

初始化变量。

static int mPageLastScreen=0; 

然后在onPageScrolled方法中添加if语句。

viewPager.setOnPageChangeListener(new OnPageChangeListener() 
        { 
         public void onPageScrollStateChanged(int state) 
         {} 
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) 
        { 
         if(mPageLastScreen!=position) 
         { 
          Log.d("page scrolled", "Page scrolled"); 
          mPageLastScreen=position; 
         } 
        } 

        public void onPageSelected(int position) 
        {} 
       }); 

我知道这是晚回复。 希望它可以帮助某人:)