9

我正在开发一个使用标准 ActionBar 的 Android 应用程序。
在某个屏幕上,我有一个过滤器图标,该图标是有条件需要的,
具体取决于所显示数据的特性,例如,某些数据是可过滤的,而
其他数据则不是。
我在操作栏上找不到任何看起来可能以编程方式隐藏操作栏操作图标的方法。如何启用/禁用操作栏操作图标?
或者
我如何隐藏/取消隐藏操作栏操作图标?

4

4 回答 4

12

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

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

例如,您可以在 onCreateOpionsMenu() 中将菜单保存为 Activity 的成员变量,然后执行以下操作:

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

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

于 2013-08-09T13:55:31.207 回答
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();
...
}
于 2015-03-31T15:32:46.120 回答
2

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

您可以使用以下简单的代码行来做到这一点:

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

如果您想摆脱应用名称,请尝试:

actionBar.setDisplayShowHomeEnabled(false);

希望这可以帮助。

于 2013-08-09T13:55:50.387 回答
0

你也可以试试这个:

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

它将隐藏图标和标题。

不要忘记您的导入:

import android.app.ActionBar;

祝你好运

于 2013-11-15T00:25:43.627 回答