Java 如何在 TabLayout 中获取当前选定的选项卡索引?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/31172729/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to get current selected tab index in TabLayout?
提问by Semyon Tikhonenko
When I use ActionBar tabs, I use this code.
当我使用 ActionBar 选项卡时,我使用此代码。
private int getCurrentTabIndex() {
ActionBar actionBar = activity.getSupportActionBar();
ActionBar.Tab selectedTab = actionBar.getSelectedTab();
if(selectedTab == null){
return 0;
}
return selectedTab.getPosition();
}
But how can I do it using TabLayout?
但是我如何使用 TabLayout 做到这一点?
采纳答案by JARP
And then in this listener get the getPosition()
.
然后在这个监听器中得到getPosition()
.
Something like this:
像这样的东西:
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener(){
@Override
public void onTabSelected(TabLayout.Tab tab){
int position = tab.getPosition();
}
});
UPDATE
更新
This method setOnTabSelectedListener()
is deprecated . Use addOnTabSelectedListener(OnTabSelectedListener)
此方法setOnTabSelectedListener()
已弃用。用addOnTabSelectedListener(OnTabSelectedListener)
回答by DoronK
setOnTabSelectedListeneris now deprecated. you can use addOnTabSelectedListenerinstead. To remove the listener you can use removeOnTabSelectedListener
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) {
}
});
回答by swanand keskar
You can simply do it by calling getSelectedTabPosition()
on your TabLayout
instance like:
您可以通过调用getSelectedTabPosition()
您的TabLayout
实例来简单地做到这一点:
int tab_position=tabLayout.getSelectedTabPosition();
and in Kotlin
在科特林
val tabPosition = mTabLayout.selectedTabPosition
回答by Juni
if you are using tabswith viewpagerthen the asked task could be done as follows:
如果您在viewpager中使用选项卡,则可以按如下方式完成所要求的任务:
use the following code after tabLayout.setUpWithViewPager(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);
}
});
回答by B-GangsteR
If you are using TabLayout
inside ViewPager
(and initializing it with setupWithViewPager()
), you can do it using ViewPager instance.
如果您在使用TabLayout
inside 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