2013-04-30 146 views
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)); 
} 
相关问题