是否可以从操作栏中动态删除/还原选项卡栏?
到目前为止,我是通过改变操作栏的导航模式来实现的。我使用以下代码删除和还原选项卡栏:
@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));
}