9

是否可以動態地從操作欄中刪除/恢復標籤欄?Android ActionBar:動態顯示/隱藏選項卡?

到目前爲止,我通過更改操作欄的導航模式來做到這一點。我用下面的代碼刪除和恢復標籤欄:

@Override 
public void restoreTabs() {  
    getSupportActionBar() 
    .setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
    this.supportInvalidateOptionsMenu(); 
} 

@Override 
public void removeTabs() {  
    getSupportActionBar() 
    .setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 
    this.supportInvalidateOptionsMenu(); 
} 

這樣的作品,但有一個很大的問題:每次我打電話setNavigationModeonTabSelected是所謂的TabListener和當前運行結束標籤被創建。

回答

1

這是按預期工作的,因爲該選項卡正在被選中,因爲它沒有出現。 我建議你由你自己的TabListener中的控件。

3
public void onDrawerClosed(View view) { 
    getActionBar().setTitle(mTitle); 
    // calling onPrepareOptionsMenu() to show action bar icons 
    getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
    invalidateOptionsMenu(); 
} 

public void onDrawerOpened(View drawerView) { 
    getActionBar().setTitle(mDrawerTitle); 
    // calling onPrepareOptionsMenu() to hide action bar icons 
    getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 
    invalidateOptionsMenu(); 
} 
4

要動態刪除的動作條的標籤,你只需要:

getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 

要增加他們在飛行中,簡單地做:

getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

對於第二種情況,假設是在設置導航模式之後,您還將添加製表符到操作欄中,與此類似:

for (int resourceId : tabs) { 
     actionBar.addTab(actionBar.newTab().setText(resourceId) 
       .setTabListener(this)); 
} 
相關問題