如何在我的课程中获取ActionBar属性[android] [英] How do I get ActionBar attribute in my class [android]

查看:45
本文介绍了如何在我的课程中获取ActionBar属性[android]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

一个简单的问题,如何使用操作栏的getDisplayOptions()?我要在使用一些自定义视图翻转视图时保持操作栏的状态.因此,在显示视图之前,我将存储操作栏状态,以便在删除视图时恢复到原始状态.我在动作栏上设置的设置很少,例如

Simple question how do I use getDisplayOptions() of action bar? I want to maintain the state of action bar as I am flipping my view with some custom view. So before bringing my view I am storing my action bar state, so that I revert back to original state when my view is removed. I set few setting to my action bar like

    actionBar.setDisplayHomeAsUpEnabled(false);
    actionBar.setHomeButtonEnabled(false);
    actionBar.setDisplayShowCustomEnabled(false);
    actionBar.setDisplayShowHomeEnabled(true);

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

So when I remove my view I want to revert back these setting. But I don't see any method like actionBar.isDisplayHomeAsUpEnabled() etc in API. Although I see actionBar.getDisplayOptions(). But don't know how to use it. Can any body help me achieving this.?

推荐答案

一个简单的问题,如何使用操作栏的getDisplayOptions()?

Simple question how do I use getDisplayOptions() of action bar?

无论何时更改ActionBar中的显示选项,都会在内部调用ActionBar.setDisplayOptions(int options, int mask),以将该显示选项与相应的位掩码配对.

Whenever you change the display options in the ActionBar, ActionBar.setDisplayOptions(int options, int mask) is called internally to pair that display option with the corresponding bitmask.

例如,当调用ActionBar.setDisplayHomeAsUpEnabled时,内部调用ActionBar.setDisplayOptions(int options, int mask)是这样的:

For instance, when ActionBar.setDisplayHomeAsUpEnabled is called, internally ActionBar.setDisplayOptions(int options, int mask) is called like this:

setDisplayOptions(showHomeAsUp ? DISPLAY_HOME_AS_UP : 0, DISPLAY_HOME_AS_UP);

因此,如果要检查是否启用了特定的显示选项,只需使用按位操作将该掩码与0进行比较即可.

So, if you want to check to see if particular display option is enabled, you just compare that mask to 0 using a bitwise operation.

// 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;

完整的示例可能类似于:

A complete example might be something like:

@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

这篇关于如何在我的课程中获取ActionBar属性[android]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆