是否可以从操作栏中动态删除/还原选项卡栏?
到目前为止,我是通过改变操作栏的导航模式来实现的。我使用以下代码删除和还原选项卡栏:

@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,并且当前打开的选项卡会被重新创建。

最佳答案

要动态删除ActionBar选项卡,您只需要:

getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);

要动态添加它们,只需执行以下操作:
getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

对于第二种情况,假设在设置导航模式之后,还将向操作栏添加选项卡,类似于:
for (int resourceId : tabs) {
        actionBar.addTab(actionBar.newTab().setText(resourceId)
                .setTabListener(this));
}

08-06 08:13