2016-10-10 10 views
1

TabLayoutの次のタブにスクロールまたはスワイプしている間に、2色の間で補間したい。これを行うには、ユーザーがいつタブをスワイプするかを知るための方法が必要です。私はTabLayout.OnScrollChangeListenerを使用しようとしましたが、メソッドは呼び出されません。ユーザーがいつ新しいタブにスワイプしているかを知ることは可能ですか?TabLayoutで水平スクロールを取得

編集:

libraryTabs.setOnScrollChangeListener(new TabLayout.OnScrollChangeListener() { 

      @Override 
      public void onScrollChange(View view, int i, int i1, int i2, int i3) { 

      } 
     }); 

が呼び出されることはありません。

答えて

1

私はあなたが望むものを達成するために考えて、あなたはこの

ViewPager mViewPager; 
    TabLayout mSlidingTabs; 
    mSlidingTabs = (TabLayout) findViewById(R.id.tabs); 
    mSlidingTabs.setupWithViewPager(mViewPager); 
    mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
     @Override 
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
      Log.w(TAG, "onPageScrolled"); 
      // do what you want 
     } 
     @Override 
     public void onPageSelected(int position) { 
      Log.w(TAG, "onPageSelected"); 
      // do what you want 
     } 
     @Override 
     public void onPageScrollStateChanged(int state) { 
      Log.w(TAG, "onPageScrollStateChanged"); 
      // do what you want 
     } 
    }); 
+0

ありがとう、これは私が探していたものです。 – user2082169

0

これを試してください。

tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 
      mViewPager.setCurrentItem(tab.getPosition()); 
      //Do whatever you want here. 
     } 

     @Override 
     public void onTabUnselected(TabLayout.Tab tab) { 
     } 

     @Override 
     public void onTabReselected(TabLayout.Tab tab) { 
     } 
    }); 
+0

おかげのようなビューページ なものが必要になりますが、それをスクロールだとき、タブが選択されていないときのためではない、この仕事だけを行います?現在、この方法を使用してタブ間の色を切り替えています。 – user2082169

+0

コードを試して、スワイプするかどうか確認してください。 ViewPagerで実装されていればうまく動作します。好奇心が強い、あなたはタブライブラリを使用していますか? –