简单的问题如何使用操作栏的getDisplayOptions()?我希望保持操作状态栏,因为我正在使用一些自定义视图来翻转我的视图。因此,在提取我的视图之前,我正在存储我的操作栏状态,以便在删除视图时恢复原始状态。我设置了很少的设置到我的操作栏,如
actionBar.setDisplayHomeAsUpEnabled(false);
actionBar.setHomeButtonEnabled(false);
actionBar.setDisplayShowCustomEnabled(false);
actionBar.setDisplayShowHomeEnabled(true);
所以当我删除我的视图时,我想恢复这些设置。但我在API中没有看到actionBar.isDisplayHomeAsUpEnabled()
等方法。虽然我看到actionBar.getDisplayOptions()。但不知道如何使用它。任何人都可以帮我实现这个目标吗?
答案 0 :(得分:9)
简单的问题如何使用操作栏的getDisplayOptions()?
每当您更改ActionBar
中的显示选项时,会在内部调用ActionBar.setDisplayOptions(int options, int mask)
以将该显示选项与相应的位掩码配对。
例如,当调用ActionBar.setDisplayHomeAsUpEnabled
时,会像这样调用内部ActionBar.setDisplayOptions(int options, int mask)
:
setDisplayOptions(showHomeAsUp ? DISPLAY_HOME_AS_UP : 0, DISPLAY_HOME_AS_UP);
因此,如果要检查是否启用了特定显示选项,只需使用按位操作将该掩码与0
进行比较。
// Retrieve the current set of display options
final int displayOptions = actionBar.getDisplayOptions();
// Determine which display options are enabled
final boolean isShowHomeEnabled = (displayOptions & ActionBar.DISPLAY_SHOW_HOME) != 0;
final boolean isHomeAsUpEnabled = (displayOptions & ActionBar.DISPLAY_HOME_AS_UP) != 0;
final boolean isShowTitleEnabled = (displayOptions & ActionBar.DISPLAY_SHOW_TITLE) != 0;
final boolean isUseLogoEnabled = (displayOptions & ActionBar.DISPLAY_USE_LOGO) != 0;
final boolean isShowCustomEnabled = (displayOptions & ActionBar.DISPLAY_SHOW_CUSTOM) != 0;
一个完整的例子可能是:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayUseLogoEnabled(true);
// Retrieve the current set of display options
final int displayOptions = actionBar.getDisplayOptions();
// Determine which display options are enabled
final boolean isShowHomeEnabled = (displayOptions & ActionBar.DISPLAY_SHOW_HOME) != 0;
final boolean isHomeAsUpEnabled = (displayOptions & ActionBar.DISPLAY_HOME_AS_UP) != 0;
final boolean isShowTitleEnabled = (displayOptions & ActionBar.DISPLAY_SHOW_TITLE) != 0;
final boolean isUseLogoEnabled = (displayOptions & ActionBar.DISPLAY_USE_LOGO) != 0;
final boolean isShowCustomEnabled = (displayOptions & ActionBar.DISPLAY_SHOW_CUSTOM) != 0;
System.out.println("show home: " + isShowHomeEnabled);
System.out.println("home as up: " + isHomeAsUpEnabled);
System.out.println("show title: " + isShowTitleEnabled);
System.out.println("use logo: " + isUseLogoEnabled);
System.out.println("show custom: " + isShowCustomEnabled);
}
哪个会打印:
show home: false
home as up: true
show title: false
use logo: true
show custom: false