【问题标题】:How to get the current selected item position using TabLayout in Android Design Library如何在 Android 设计库中使用 TabLayout 获取当前选定项目的位置
【发布时间】:2015-06-10 13:39:22
【问题描述】:

我正在使用android设计库TabLayout,我怎样才能获得当前选定的项目选项卡位置。

  ViewPager pager = (ViewPager) view.findViewById(R.id.pager);      
  MyPagerAdapter adapter = new MyPagerAdapter(getChildFragmentManager());
  pager.setAdapter(adapter);
  tabLayout.setupWithViewPager(pager);

【问题讨论】:

    标签: android android-design-library androiddesignsupport


    【解决方案1】:

    从支持库的 22.2.1 版开始,TabLayout 有一个方法 getSelectedTabPosition

    Source 1 | Source 2

    【讨论】:

    • +1 投票支持您的努力...但您也可以在评论中写下...或者您也可以编辑我的答案...
    【解决方案2】:

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

    【讨论】:

    • 是否可以使用 TabLayout 实例获取当前项目位置,否则我可以从 TabLayout 获取 ViewPager 实例
    • 不幸的是TabLayout 没有公开任何类似的方法。由于您已经获得了对 ViewPager 的引用,因此这应该不是问题。
    【解决方案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) {
            }
    

    【讨论】:

      【解决方案4】:

      [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 是您要存储位置的整数变量
      • 请注意,这可能会破坏您的ViewPager 的行为,因为setupWithViewPager() 调用setOnTabSelectedListener() 并且您只能有一个这样的监听器。如果您使用此方法,您将希望将此侦听器中的事件传递给您的 ViewPager。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-19
      • 2016-02-11
      • 2018-12-19
      • 1970-01-01
      • 2017-07-27
      相关资源
      最近更新 更多