1
我有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