0

我有一个NavigationView,我想要设置为与ViewPagerTabLayout一起工作。在Java代码中设置选定的选项卡指示器

item的点击来自NavigationView应:

  1. 将用户引导至相应的fragment

  2. 设置TabLayout指标相应

我设法完成第一个任务使用mViewPager.setCurrentItem()但我无法修复第二个。我想:

  1. 为了获取通过TabLayouttab和 “选择” 是:

    mTabLayout.getTabAt(TAB_POSITION).select(); 
    

    ,但它是一个半身像。 (Tab indicator

  2. 在每次点击item后致电mTabLayout.setupWithViewPager(mViewPager);但结果相同。 (TabLayout tab selection)。

编辑 - 代码:

mViewPager = (ViewPager) findViewById(R.id.viewpager); 
    mViewPager.setAdapter(mAdapter); 
    mTabLayout = (TabLayout) findViewById(R.id.tablayout); 
    mTabLayout.setupWithViewPager(mViewPager); 

    mViewPager.addOnPageChangeListener(new PageChangeListener()); 

..... .....

class PageChangeListener implements ViewPager.OnPageChangeListener { 

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

    } 

    @Override 
    public void onPageSelected(int position) { 
     switch (position) { 
      case 0: 
       mTabLayout.getTabAt(0).select(); 
       break; 
      case 1: 
       mFloatingAddButton.setVisibility(View.VISIBLE); 
       mTabLayout.getTabAt(1).select(); 
       break; 
      default: 
       mFloatingAddButton.setVisibility(View.INVISIBLE); 
       mTabLayout.getTabAt(2).select(); 
       break; 
     } 
    } 

    @Override 
    public void onPageScrollStateChanged(int state) { 

    } 
} 

我怎么能管理,以配合一切融合在一起?

回答

0

TabLayout类的方法setupWithViewPager,我们可以看到,设置了回拨时在视图寻呼机:

viewPager.addOnPageChangeListener(new TabLayoutOnPageChangeListener(this));

在类TabLayoutOnPageChangeListener,这里是方法onPageSelected

public void onPageSelected(int position) { 
final TabLayout tabLayout = mTabLayoutRef.get(); 
      if (tabLayout != null && tabLayout.getSelectedTabPosition() != position) { 
       // Select the tab, only updating the indicator if we're not being dragged/settled 
       // (since onPageScrolled will handle that). 
       tabLayout.selectTab(tabLayout.getTabAt(position), 
         mScrollState == ViewPager.SCROLL_STATE_IDLE); 
      } 
     } 

所以在这里我们可以看到,当viewpager改变它的内容时,tablayout应该选择好的选项卡。

您是否在设置ViewPager的适配器后立即拨打setupWithViewPager

+0

设置我的ViewPager适配器后,我会调用setupWithViewPager。无论如何,我试图做你说的,但它没有奏效。 –

+0

您是否尝试调试以查看此方法是否真的被调用?你能显示你的代码吗? –

+0

当然我调试过了。没有日志错误,没有任何东西。 –

相关问题