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

Sem*_*nko 28 java tabs android android-tablayout

当我使用ActionBar选项卡时,我使用此代码.

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

    return selectedTab.getPosition();
}
Run Code Online (Sandbox Code Playgroud)

但是我怎么能用TabLayout来做呢?

小智 64

使用OnTabSelectedListener.

然后在这个听众中得到了getPosition().

像这样的东西:

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

UPDATE

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

  • 请注意,如果您使用的是[setupWithViewPager()](https://developer.android.com/reference/android/support/design/widget/TabLayout.html#setupWithViewPager(android.support.v4.view.ViewPager)),应该扩展[TabLayout.ViewPagerOnTabSelectedListener](https://developer.android.com/reference/android/support/design/widget/TabLayout.ViewPagerOnTabSelectedListener.html)而不是`TabLayout.OnTabSelectedListener`并确保在`setupWithViewPager之后调用它()`如果你想与`ViewPager`功能进行默认集成. (9认同)
  • 现在不推荐使用`setOnTabSelectedListener()`. (5认同)
  • 不推荐使用此方法`setOnTabSelectedListener()`.请改用"addOnTabSelectedListener(OnTabSelectedListener)". (4认同)

Dor*_*onK 32

现在不推荐使用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) {
        }
    });
Run Code Online (Sandbox Code Playgroud)


swa*_*kar 19

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

int tab_position=tabLayout.getSelectedTabPosition();
Run Code Online (Sandbox Code Playgroud)

  • 如果你想要实际的选项卡 `tabLayout.getTabAt(layout.selectedTabPosition)` (4认同)