动态启用/禁用隐藏/显示Android ActionBar操作图标

9

我正在开发一个使用标准ActionBar的Android应用程序。
在某个屏幕上,我有一个筛选图标,它根据被显示的数据的特性有条件地需要,例如,一些数据是可过滤的,而其他数据则不是。
在actionbar上,我找不到任何看起来像是编程隐藏actionbar操作图标的可能候选方法。如何启用/禁用actionbar操作图标?

如何隐藏/显示actionbar操作图标?

4个回答

12

看一下这个,它展示了如何在运行时更改菜单项。

http://developer.android.com/guide/topics/ui/menus.html#ChangingTheMenu

例如,您可以将菜单保存为您的Activity的成员变量,并在onCreateOptionsMenu()内执行以下操作:

MenuItem item = mMenu.findItem(R.id.addAction);
item.doSomething()

当您想要更改特定菜单项上的内容时。


Phil,感谢你抽出时间。这正是我所需要的。感到很惭愧,我自己找不到它 :-) - Hector

3
您可以通过覆盖onPrepareOptionsMenu()方法来实现。这里是一个小例子。
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    if (count < 1)
        menu.getItem(4).setEnabled(false); //disable menuitem 5
    if (!after)
    menu.getItem(1).setVisible(false); // invisible menuitem 2
    invalidateOptionsMenu();
    return true;
}

然而,这种方法只有在你点击操作栏中的菜单按钮时才会被调用。如果你在操作栏上有任何图标(除了菜单按钮),点击它们将不会触发OnPrepareOptionsMenu()方法。为了手动触发此方法,您可以在自己的方法中使用invalidateOptionsMenu(),像这样:

void yourMethod () {
...
invalidateOptionsMenu();
...
}

如何在Fragment中实现?如何调用invalidateOptionsMenu();方法? - Shajeel Afzal

2

据我了解,您需要移除显示在操作栏左上方的图标。

您可以使用以下简单的代码来实现:

final ActionBar actionBar = getActionBar();     
actionBar.setDisplayShowTitleEnabled(false);

如果您想要去掉应用程序名称,请尝试以下操作:

actionBar.setDisplayShowHomeEnabled(false);

希望这有所帮助。

不是OP所请求的内容。 - Ali Bdeir

0

你也可以尝试这个:

final ActionBar actionBar= getActionBar();
actionBar.hide();

它将隐藏图标和标题。

不要忘记导入:

import android.app.ActionBar;

祝好运


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接