如何在我的类[android]中获取ActionBar属性

And*_*oid 4 android android-actionbar

简单的问题我如何使用动作栏的getDisplayOptions()?我希望保持操作状态栏,因为我正在使用一些自定义视图来翻转我的视图.因此,在提取我的视图之前,我正在存储我的操作栏状态,以便在删除视图时恢复原始状态.我设置了很少的设置到我的操作栏

    actionBar.setDisplayHomeAsUpEnabled(false);
    actionBar.setHomeButtonEnabled(false);
    actionBar.setDisplayShowCustomEnabled(false);
    actionBar.setDisplayShowHomeEnabled(true);
Run Code Online (Sandbox Code Playgroud)

因此,当我删除我的视图时,我想恢复这些设置.但我没有actionBar.isDisplayHomeAsUpEnabled()在API中看到像etc 这样的方法.虽然我看到actionBar.getDisplayOptions().但不知道如何使用它.任何人都可以帮助我实现这一目标.

adn*_*eal 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);
Run Code Online (Sandbox Code Playgroud)

因此,如果要检查是否启用了特定的显示选项,只需将该掩码与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;
Run Code Online (Sandbox Code Playgroud)

一个完整的例子可能是这样的:

@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);
}
Run Code Online (Sandbox Code Playgroud)

哪个会打印:

show home: false
home as up: true
show title: false
use logo: true
show custom: false
Run Code Online (Sandbox Code Playgroud)