如何隐藏ActionBar中的图标?

时间:2014-04-12 17:35:43

标签: android android-actionbar

我希望根据变量隐藏ActionBar中的图标。有一种简单的方法可以做到这一点吗?

我是否需要使用onPrepareOptionsMenu(),如果是这样的话?

2 个答案:

答案 0 :(得分:2)

要隐藏菜单项,您应在菜单充气后使用活动setVisible()覆盖菜单项中的onPrepareOptionsMenu()方法。例如:

@Override
public boolean onPrepareOptionsMenu(Menu menu) {

    MenuInflater inflater = getMenuInflater();

    inflater.inflate(R.menu.example, menu);

    if(showItem) {

        menu.findItem(R.id.icon).setVisible(true);

    } else {

        menu.findItem(R.id.icon).setVisible(false);

    }

    return true;

}

如果您在onCreate()内声明了自己的变量,那么它将被限制在onCreate()的范围内,因此无法访问onPrepareOptionsMenu()

例如,而不是:

@Override
protected void onCreate(Bundle savedInstanceState) {
    boolean showItem = false;
    // ...
} 

声明如下:

public boolean showItem = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // ...
}

此外,如果您想更改按钮按下的可见性,例如,您需要调用invalidateOptionsMenu()方法重新加载菜单。

答案 1 :(得分:0)

您需要根据您的变量拨打invalidateOptionsMenu()

当您致电invalidateOptionsMenu()时,系统会调用onPrepareOptionsMenu,您可以隐藏/显示此选项菜单..

 @Override
 public boolean onPrepareOptionsMenu(Menu menu){

  for(int index = 0 ; index < menu.size() ; index ++){
    MenuItem menuItem = menu.getItem(index);
    if(menuItem != null) {
        // hide the menu items 
        menuItem.setVisible(false);
    }
    }
   return super.onPrepareOptionsMenu(menu);
  }