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(); 
} 

動作しますが、大きな問題があります:毎回私はonTabSelectedTabListenerに呼び出され、現在オープンしましタブが再作成されます、setNavigationModeを呼び出します。

答えて

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)); 
} 
関連する問題