【问题标题】:change MenuItem visibility when clicked单击时更改 MenuItem 可见性
【发布时间】:2012-12-10 16:35:50
【问题描述】:

我正在尝试隐藏一个MenuItem,并在选择第一个时使另一个可见。

每个的 ID 是:

pencil: R.id.button_routines_edit
check mark: R.id.button_routines_edit_done

这里是相关代码:

  private boolean isEditing = false;

  @Override
  public boolean onOptionsItemSelected(MenuItem item) {   
      // Handle item selection
      switch (item.getItemId()) {
      case R.id.button_routines_edit:
            // hide pencil icon, show checkmark
            isEditing = true;
        return true;
      case R.id.button_routines_edit_done:
            // show pencil icon, done editing
            isEditing = false;
        return true;
      default:
          return super.onOptionsItemSelected(item);
      }

  }

  @Override
  public boolean onPrepareOptionsMenu(Menu menu) {
      super.onPrepareOptionsMenu(menu);
      // hide pencil when editing and show check mark
      menu.findItem(R.id.button_routines_edit).setVisible(!isEditing);
      menu.findItem(R.id.button_routines_edit_done).setVisible(isEditing);
      return true;
  }

我的问题是: 选项菜单在项目被选中时不会重绘它们。换句话说,第一个没有隐藏,第二个没有显示。

【问题讨论】:

  • 您需要使用setVisibility(View.INVISIBLE);setVisibility(View.GONE); 使视图不可行
  • 它不是一个视图,它是一个菜单项,因此该方法不起作用。

标签: android case visibility menuitem


【解决方案1】:

您只需致电invalidateOptionsMenu()

invalidateOptionsMenu() 仅在 API 11+ 中可用,除非您使用的是 ActionBarSherlock

您遇到此问题是因为您的MenuItems 基本上显示在ActionBar 中。如果将它们放在溢出菜单中,则无需调用invalidateOptionsMenu()

【讨论】:

  • 不知道为什么这被否决了。这工作得很好。我还读到您必须使用此功能,因为操作栏始终存在,并且使用此功能会强制执行 onPrepareOptionsMenu。
  • 在ActionBarSherlock的情况下,可以用supportInvalidateOptionsMenu()代替。
【解决方案2】:

试试这个,它必须隐藏菜单项

public boolean onCreateOptionsMenu(Menu menu){

          menu.getItem(R.id.button_routines_edit).setVisible(!isEditing);
          menu.getItem(R.id.button_routines_edit_done).setVisible(isEditing);
          return true;
      }

【讨论】:

    猜你喜欢
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 2015-12-19
    • 2015-09-19
    • 1970-01-01
    • 2015-08-18
    • 2021-03-12
    • 2020-02-10
    相关资源
    最近更新 更多