2016-05-06 37 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

相關問題