2016-02-10 39 views
1

我正在開發一個android應用程序。我使用TabLayout製表符。但我沒有使用頁面視圖來選擇選項卡上的片段。相反,我正在將事件監聽器的片段替換爲視圖。我想在選擇菜單項時取消選擇所有選項卡。但是我在stackoverflow中看到了一個相同的問題。答案是不能做到這一點。因爲必須選擇一個選項卡。請參閱下面的我的場景。如何取消選擇Android中的TabLayout的所有選項卡,因爲選項菜單?

這是我的應用程序

enter image description here

的UI設計,正如你可以看到上面的設計,播客選項卡默認情況下選中。這是問題開始的地方。

這裏是我的選擇菜單的截圖和功能

enter image description here

enter image description here

問題是,當我選擇的設置,而我PODCASTS選項卡上,設置片段更換。但是PODCASTS選項卡仍處於選中狀態。但是當我再次點擊時,播客列表片段不會被替換回來。請問我該如何解決這個問題?

這是我如何MainActivity

添加選項卡標籤佈局
private void setupTabs() { 
     tabLayout.addTab(tabLayout.newTab().setText("Podcasts")); 
     tabLayout.addTab(tabLayout.newTab().setText("Playlist")); 
     tabLayout.addTab(tabLayout.newTab().setText("Downloads")); 
     tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
      @Override 
      public void onTabSelected(TabLayout.Tab tab) { 
       switch (tab.getPosition()){ 
        case 1: 
         setPlaylistFragment(); 
         commitFragment(); 
         break; 
        case 2: 
         setDownloadsFragment(); 
         commitFragment(); 
         break; 
        default: 
         setPodcastListFragment(0, getResources().getString(R.string.app_name), "ALL_FRAGMENT"); 
         commitFragment(); 
         break; 
       } 
      } 

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

      } 

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

      } 
     }); 
    } 

所以,請幫我解決我的問題。謝謝。

+0

出於好奇,爲什麼不'ViewPager'與'tabLayout.setupWithViewPager(viewPager);' –

+0

因爲我也有導航抽屜 –

+0

有啥導航抽屜與ViewPager和TabLayout做他們是獨立的。殺人行爲O. – sector11

回答

1

我得到了答案。我只需要重寫onTabReselected。所以我的聽衆會是這樣的。

tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
      @Override 
      public void onTabSelected(TabLayout.Tab tab) { 
       switch (tab.getPosition()){ 
        case 1: 
         setPlaylistFragment(); 
         commitFragment(); 
         break; 
        case 2: 
         setDownloadsFragment(); 
         commitFragment(); 
         break; 
        default: 
         setPodcastListFragment(0, getResources().getString(R.string.app_name), "ALL_FRAGMENT"); 
         commitFragment(); 
         break; 
       } 
      } 

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

      } 

      @Override 
      public void onTabReselected(TabLayout.Tab tab) { 
       switch (tab.getPosition()){ 
        case 1: 
         setPlaylistFragment(); 
         commitFragment(); 
         break; 
        case 2: 
         setDownloadsFragment(); 
         commitFragment(); 
         break; 
        default: 
         setPodcastListFragment(0, getResources().getString(R.string.app_name), "ALL_FRAGMENT"); 
         commitFragment(); 
         break; 
       } 
      } 
     }); 
0

設置按鈕按下 tabHost.getTabWidget().getChildAt(i) .setBackgroundColor(Color.parseColor("#393939")); 和所選擇的選項卡中設置一些其他選項卡即setSelected(1)

你的流量就會像that.If你是製表1,當您可以更改所選標籤的背景您點擊設置按鈕,然後點擊按鈕點擊您可以更改選定選項卡的選定選項卡和背景。現在,當用戶選擇第一個選項卡時,他可以看到該選項卡的內容

Ps:因爲較少的聲譽,我沒有評論它你的問題

0

我會推薦你​​使用一個布爾值來保存狀態,例如,如果我不想要一個視圖A來顯示,我將通過創建一個布爾值來表示布爾值showA並將其設置爲false,我將它設置爲true,點擊您所說的選項Item,我將設置該布爾值爲false,這意味着A不會顯示,因爲它取決於布爾值。這應該做到這一點。希望這個幫助。

+0

例如,A表示抽屜項目,B表示選項?那麼我將有兩個主要的內容視圖並有條件地切換它? –

相關問題