如何在TabLayout中获取当前选定的选项卡索引?

时间:2015-07-01 22:26:55

标签: java android tabs

当我使用ActionBar标签时,我使用此代码。

private int getCurrentTabIndex() {
    ActionBar actionBar = activity.getSupportActionBar();
    ActionBar.Tab selectedTab = actionBar.getSelectedTab();
    if(selectedTab == null){
        return 0;
    }

    return selectedTab.getPosition();
}

但我怎么能用TabLayout来做呢?

5 个答案:

答案 0 :(得分:54)

使用OnTabSelectedListener

然后在这个监听器中获取getPosition()

这样的事情:

tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener(){
    @Override
    public void onTabSelected(TabLayout.Tab tab){
        int position = tab.getPosition();
    }
});

<强>更新

不推荐使用此方法setOnTabSelectedListener()。使用addOnTabSelectedListener(OnTabSelectedListener)

答案 1 :(得分:31)

现在不推荐使用

setOnTabSelectedListener 。您可以使用 addOnTabSelectedListener 。要删除侦听器,您可以使用 removeOnTabSelectedListener

 mTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            int position = tab.getPosition();
        }

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

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

答案 2 :(得分:17)

您可以通过在getSelectedTabPosition()个实例上调用TabLayout来执行此操作,例如:

int tab_position=tabLayout.getSelectedTabPosition();

答案 3 :(得分:0)

如果您将标签 viewpager 一起使用,则可以按如下方式完成提问任务:

tabLayout.setUpWithViewPager(viewPager)

之后使用以下代码
tabLayout.setOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager) {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
        switch(tab.getPosition()){
            // do something here
        }
        super.onTabSelected(tab);
    }
});

答案 4 :(得分:0)

如果您在TabLayout内使用ViewPager(并使用setupWithViewPager()进行初始化),则可以使用ViewPager实例来实现。

    View view = inflater.inflate(R.layout.fragment_view_pager_tabs, container, false);
    ViewPager viewPager = view.findViewById(R.id.view_pager_tabs);
    viewPager.setAdapter(pagerAdapter);
    TabLayout tabLayout = viewPager.findViewById(R.id.tab_layout);
    tabLayout.setupWithViewPager(viewPager);
    int item = viewPager.getCurrentItem(); // get
    viewPager.setCurrentItem(item, true);  // set