Android的ActionBar:显示/隐藏标签dynamic?

是否有可能从动作栏dynamic删除/恢复标签栏?

到目前为止,我通过改变操作栏的导航模式来做到这一点。 我使用下面的代码来删除和恢复标签栏:

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

这是有效的,但有一个很大的问题:每次我调用setNavigationMode ,在onTabSelected中调用TabListener并重新创build当前的TabListener选项卡。

  • Android ActionBar选项卡设置最初选定的选项卡
  • 恢复时不恢复ViewPager中的片段视图
  • Android 5.0 Material-Styled选项卡
  • 将图标添加到SlidingTabLayout而不是文本
  • 嵌套的操作栏选项卡(与ViewPager)
  • 把标签放在屏幕的底部
  • ViewPager中的片段视图在恢复时不会恢复
  • 菜单选项卡不响应
  • 要dynamic删除操作栏选项卡,只需要:

     getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 

    要快速添加它们,只需执行以下操作:

     getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

    对于第二种情况,假定在设置导航模式之后,还将向操作栏中添加选项卡,类似于:

     for (int resourceId : tabs) { actionBar.addTab(actionBar.newTab().setText(resourceId) .setTabListener(this)); } 
     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(); } 

    这是按预期工作,因为选项卡被选中,因为它没有出现。 我build议你自己做TabListener中的控件。