安卓工具栏菜单 - 动态更改
问题描述:
我有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
)。(它改变只有三个点菜单里面的物品..没有可绘制的知名度图标)。 只有当我点击菜单三点时,它才开始按我的需要工作。 如果我打开应用程序并显示对话框并关闭它,则菜单可以正常工作。
如何在打开应用程序时解决它的问题?
感谢
编辑
<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();
.....
每一件事情效果很好。
答
解决方法是升级模拟器。也许是模拟器中的一个错误。当我在一些设备上尝试它时,它工作正常。
你能提供你的意思的截图。想象一下你的意思有点困难 –
或者更好的是,单独隐藏菜单条目可能会更好:'menu.findItem(R.id.menuItem1).setVisible(showGroup);' 我认为组的可见性仅当溢出菜单打开时才起作用。如果这就是你的意思,那么我可以添加它作为答案,所以你可以**接受**。 –
@Passerby这和以前一样... – Alon