2014-09-22 68 views
1

我使用自定義ViewPager,ViewPager.OnPageChangeListener在我滑動到新頁面時不起作用。可能是什麼原因?ViewPager OnPageChangeListener不起作用

mPager = (WrapContentHeightViewPager) findViewById(R.id.pager); 

     mPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
      public void onPageScrollStateChanged(int state) {} 
      public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {} 

      public void onPageSelected(int position) { 
       // Check if this is the page you want. 
       currentFav = position; 
       Log.i("currentFav pos", currentFav+""); 
      } 
     }); 
+0

'ViewPager.OnPageChangeListener不,當我滑到一個新page'你能解釋一下你越做了什麼問題工作? – 2014-09-22 18:14:48

+0

當我滑動到viewpager中的其他頁面時,應該有Logs打印currentFav,但我看不到它們。 – 2014-09-22 18:23:47

+0

我想從viewpager中刪除currentFav。 CurrentFav應該是位置的頁碼,這就是爲什麼我要將位置分配給currentFav。但是,當我滑動頁面時,onPageListener不在監聽,我無法獲取位置。你能幫我解決嗎? – 2014-09-22 19:51:31

回答

10

我使用ViewPagerIndicator庫,所以根據這個庫,我應該設置頁面監聽器到指標上。

mIndicator.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 
     @Override 
     public void onPageSelected(int position) { 
      doYourThing(); 
     } 
    }); 

更新@ powder366:

在你的build.gradle文件,添加到庫的依賴

compile 'com.viewpagerindicator:library:[email protected]' 

在頂層的build.gradle文件,添加這些:

// Top-level build file where you can add configuration options common to all sub-projects/modules. 

buildscript { 
    repositories { 
     maven { url "http://dl.bintray.com/populov/maven" } 
     mavenCentral() 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:1.2.3' 

     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
    } 
} 

allprojects { 
    repositories { 
     maven { url "http://dl.bintray.com/populov/maven" } 
     mavenCentral() 
     jcenter() 
    } 
} 

您可以將指標添加到您的xml中,如下所示:

<com.viewpagerindicator.CirclePageIndicator 
          android:id="@+id/indicator" 
          android:layout_width="match_parent" 
          android:layout_height="wrap_content" 
          android:background="@color/blue" 
          android:padding="10dip" 
          app:fillColor="@color/circleindicatorfill" 
          app:pageColor="@color/circleindicatorempty" 
          app:strokeWidth="0dp" /> 

獲取指標如下:

mIndicator = (CirclePageIndicator) findViewById(R.id.indicator); 

mViewPager.setAdapter(mFragmentAdapter); 

mIndicator.setViewPager(mViewPager); 

mIndicator 
     .setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 
        public void onPageScrollStateChanged(int state) { 
        } 

        public void onPageScrolled(int position, 
               float positionOffset, int positionOffsetPixels) { 
        } 

        public void onPageSelected(int position) { 

         // Check if this is the page you want. 
         /* currentFav = position; 
         Log.i("currentFav pos", currentFav + "");*/ 
        } 
       }); 
+0

如何獲得指標? – powder366 2015-08-16 15:27:04

+1

我爲你更新了我的答案。 – 2015-08-16 19:51:26

相關問題