如何使用Android Design Library中的TabLayout获取当前选定项的位置

5
我正在使用 Android 设计库中的 TabLayout,那么如何获取当前选中的标签位置?
  ViewPager pager = (ViewPager) view.findViewById(R.id.pager);      
  MyPagerAdapter adapter = new MyPagerAdapter(getChildFragmentManager());
  pager.setAdapter(adapter);
  tabLayout.setupWithViewPager(pager);
4个回答

7

+1 给你的努力点赞...但你也可以在评论中写下来...或者你也可以编辑我的答案... - Moinkhan

3
  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) {
        }

3

您可以调用ViewPager的getCurrentItem()方法来获取当前显示项的索引。


能否通过TabLayout实例获取当前项的位置,或者可以从TabLayout获取ViewPager实例? - Kamalanathan
不幸的是,TabLayout没有公开任何类似的方法。由于您已经需要获取对ViewPager的引用,因此这不应该是一个问题。 - Bryan Herbst

1

[更新于2016年7月29日]

请参考已接受的答案,因为以下回答已经过时。如果您使用的是旧版本,请参考它。

您可以轻松地做到...

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

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

                }

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

                }
            });

pos是您想要存储位置的整数变量。 - Moinkhan
2
请注意,这可能会破坏您的ViewPager的行为,因为setupWithViewPager()调用了setOnTabSelectedListener(),而您只能有一个此类侦听器。如果您选择使用此方法,您将希望将此侦听器的事件传递给您的ViewPager。 - Bryan Herbst

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接