Android工具栏菜单 - 动态更改

时间:2016-08-20 18:22:49

标签: android android-toolbar

我在menu.xml内有小组,我尝试更改小组的可见性。

  //in the onCreate
  myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
  setSupportActionBar(myToolbar);

  @Override
  public boolean onPrepareOptionsMenu(Menu menu) {
    super.onPrepareOptionsMenu(menu);
    menu.setGroupVisible(R.id.group, showGroup);
    return true;
  }

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu, menu);
    return true;
  }

当我打开应用程序时,这不会改变组的可见性。(当我呼叫invalidateOptionsMenu时)。(它只更改三点菜单中项目的可见性..而不是drawables图标)。 只有当我点击三点菜单时,它才会按照我的意愿开始工作。 如果我打开应用程序并显示对话框并关闭它,菜单就可以正常工作..

如何在打开应用程序时将其修复?

由于

修改

    <menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<group
    android:id="@+id/group"
    >
<item
    android:id="@+id/delete_btn"
    android:icon="@drawable/ic_delete_black_24dp"
    android:title="delete"
    app:showAsAction="always"
  />

<item
    android:id="@+id/invite_btn"
    android:icon="@drawable/ic_group_add_black_24dp"
    android:title="invite"
    app:showAsAction="never"
    />
</group>
<!-- Settings, should always be in the overflow -->
<item android:id="@+id/action_settings"
    android:title="Sign Out"
    app:showAsAction="never"/>

</menu>

如果我运行此代码:

this.showGroup=true;
invalidateOptionsMenu();

它只显示3点内的invite_btn。

当我点击3点时,它会渲染delete_btn的图标。

此时如果我运行此代码

 this.showGroup=false;
invalidateOptionsMenu();
.....
this.showGroup=true;
invalidateOptionsMenu();
.....

每件事都运作良好。

0 个答案:

没有答案