2016-05-06 154 views
2

我正在使用Android设计库中的TabLayout。我有多个选项卡,每个选项卡在选择时都有一个操作。所以我有一个属性startSelection,它执行Android TabLayout在启动时选择第一个标签

tabLayout.getTabAt(startSelection).select(); 

这将选择选项卡并执行此选项卡的操作。对于除第一个外的每个Tab,它都可以正常工作,在没有(!)执行操作的情况下在启动时会自动选择它。有没有人有这个解决方案?

我不想使用onTabReselected方法,因为这会导致TabLayout的另一个行为。同样选择第二个选项卡,然后选择第一个选项卡并不是一个好的解决方案。

问候

回答

1

我知道了。解决方案很简单,使用(一次)onTabReselected并在那里覆盖监听器。

tabLayout.setOnTabSelectedListener(new OnTabSelectedListener() { 

    @Override 
    public void onTabSelected(Tab tab) { 
     selectTab(tab); 
    } 

    private void selectTab(Tab tab) { 
     // do something     
    } 

    @Override 
    public void onTabReselected(Tab tab) { 
     if (tab.getPosition() == 0) { 
      selectTab(tab); 

      tabLayout.setOnTabSelectedListener(new OnTabSelectedListener() { 

       @Override 
       public void onTabSelected(Tab tab) { 
        selectTab(tab); 
       } 

       @Override 
       public void onTabReselected(Tab arg0) {        
       } 

       @Override 
       public void onTabUnselected(Tab arg0) {        
       } 
      }); 

     } 
    } 


    @Override 
    public void onTabUnselected(Tab tab) { 
    } 

}); 
0

当你试图语法选择第一个选项卡到时候你的观点初始化未完成。使用手柄并等到100ms然后尝试选择标签。

试试这个在您的onCreate()

new Handler().postDelayed(
    new Runnable(){ 
     @Override 
     public void run() { 
      tabLayout.getTabAt(startSelection).select(); 
     } 
}, 100); 
+1

嗨,初始化过程完成时,我这样做。正如我写的,选择标签2,3,4等工作。但不是第一个,因为该选项卡是默认选中的。选择一个选定的选项卡不会执行任何操作。 :( – user2331454

+0

作为@ user2331454提到,这将无法正常工作,因为.select()将被忽略,因为startSelection == currentSelected – Bugdr0id

相关问题