Android:如何启用/禁用按钮点击选项菜单项?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (180)

当我使用onCreateOptionsMenuonOptionsItemSelected方法时,我可以轻松地做到这一点。

但是我在屏幕上的某处有一个按钮,点击该按钮时,它应该启用/禁用上下文菜单项。

提问于
用户回答回答于

在运行时更改菜单项:

onCreateOptionsMenu()如上所述,一旦创建活动,该 方法只被调用一次。系统保留并重新使用Menu您在此方法中定义的行为,直到您的活动被破坏。如果您想要在首次创建后更改选项菜单,则必须覆盖该onPrepareOptionsMenu()方法。这会传递给你当前存在的Menu对象。如果您想根据应用程序的当前状态删除,添加,禁用或启用菜单项,这非常有用。

以及这样:

@Override
public boolean onPrepareOptionsMenu (Menu menu) {
    if (isFinalized) {
        menu.getItem(1).setEnabled(false);
        // You can also use something like:
        // menu.findItem(R.id.example_foobar).setEnabled(false);
    }
    return true;
}

在Android 3.0及更高版本中,当菜单项出现在操作栏中时,选项菜单始终处于打开状态。当发生事件并且你想要执行菜单更新时,你必须调用invalidateOptionsMenu()以请求系统调用onPrepareOptionsMenu()

用户回答回答于

在所有Android版本中,最简单的方法是:使用此选项将菜单操作图标显示为已禁用,并将其功能设为已禁用:

@Override
public boolean onPrepareOptionsMenu(Menu menu) {

    MenuItem item = menu.findItem(R.id.menu_my_item);

    if (myItemShouldBeEnabled) {
        item.setEnabled(true);
        item.getIcon().setAlpha(255);
    } else {
        // disabled
        item.setEnabled(false);
        item.getIcon().setAlpha(130);
    }
}

扫码关注云+社区