回答
menu.xml文件
<item
android:id="@+id/item1"
android:title="your Item">
</item>
把你的java文件
public void onPrepareOptionsMenu(Menu menu) {
menu.removeItem(R.id.item1);
}
禁用不會刪除 – zizoujab
它爲我工作。謝謝。 –
這是我正在尋找的人,因爲我想在運行時做出一次決定,但不需要在之後更改選項。我使用: @Override public boolean onPrepareOptionsMenu(Menu menu){ if(!showItemName){ menu.removeItem(R.id.itemname); } return true; } – notmystyle
如果我有onMenuOpened期間更改我的選項菜單的我執行它的內容()。這允許我在用戶訪問菜單的那一刻檢查運行狀態。
public boolean onMenuOpened(int featureid, Menu menu)
{
menu.clear();
if (!editable)
{
MenuItem itemAdd = menu.add(0, REASSIGN, Menu.NONE, context.getString(R.string.reassign));
MenuItem itemMod = menu.add(1, EDIT, Menu.NONE, context.getString(R.string.modify));
MenuItem itemDel = menu.add(2, DELETE, Menu.NONE, context.getString(R.string.delete));
itemAdd.setShortcut('0', 'a');
itemMod.setShortcut('1', 'm');
itemDel.setShortcut('2', 'd');
}
else
{
MenuItem itemSave = menu.add(3, SAVE, Menu.NONE, context.getString(R.string.savechanges));
itemSave.setShortcut('0', 'S');
}
return true;
}
對於任何需要改變的動態菜單的選項:
private Menu menu;
// ...
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
this.menu = menu;
getMenuInflater().inflate(R.menu.options, menu);
return true;
}
// ...
private void hideOption(int id)
{
MenuItem item = menu.findItem(id);
item.setVisible(false);
}
private void showOption(int id)
{
MenuItem item = menu.findItem(id);
item.setVisible(true);
}
private void setOptionTitle(int id, String title)
{
MenuItem item = menu.findItem(id);
item.setTitle(title);
}
private void setOptionIcon(int id, int iconRes)
{
MenuItem item = menu.findItem(id);
item.setIcon(iconRes);
}
像尼古拉說,這樣做,在onPrepareOptionsMenu()。
對於操作欄中的菜單項,你必須廢止與 activity.invalidateOptionsMenu();
此菜單這裏How can I refresh the ActionBar when onPrepareOptionsMenu switched menu entries?
更詳細的descriped禁用某些項目:
MenuItem item = menu.findItem(R.id.ID_ASSING_TO_THE_ITEM_IN_MENU_XML);
item.setEnabled(false);
你可以像我一樣做簡單的事情。只需將文本更改爲觸摸菜單項時所需的內容即可。我需要關閉和打開聲音,以及通過觸摸來執行操作的功能。這是我的代碼:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.audioOn:
audioOn = !audioOn;
if (audioOn)
item.setTitle("Audio Off");
else
item.setTitle("Audio On");
return true;
case R.id.touchOn:
touchOn = !touchOn;
if (touchOn)
item.setTitle("Touch Off");
else
item.setTitle("Touch On");
return true;
default:
return super.onOptionsItemSelected(item);
}
}
audioOn和touchOn是在代碼的其他部分檢查的布爾值。希望這可以幫助。
我該如何動態地做到這一點。我的意思是...在選擇一個選項後調用web服務,然後調用它的成功響應...重新調用onCreateOptionsMenu。如何做? – NarendraJi
試試這個代碼:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
this.menu=menu;
updateMenuItems(menu);
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.document_list_activity_actions, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle presses on the action bar items
if (item.getItemId() == android.R.id.home) {
onHomeButtonPresssed();
}else if (item.getItemId() == R.id.action_delete) {
useCheckBoxAdapter=false;
deleteDocuments();
} else if (item.getItemId() == R.id.share) {
useCheckBoxAdapter=false;
shareDocuments();
} else if (item.getItemId() == R.id.action_tick) {
useCheckBoxAdapter=true;
onShowCheckboxes();
}
updateMenuItems(menu);
return true;
}
private void updateMenuItems(Menu menu){
if (useCheckBoxAdapter && menu != null) {
menu.findItem(R.id.action_delete).setVisible(true);
menu.findItem(R.id.share).setVisible(true);
menu.findItem(R.id.action_tick).setVisible(false);
} else {
menu.findItem(R.id.action_delete).setVisible(false);
menu.findItem(R.id.share).setVisible(false);
menu.findItem(R.id.action_tick).setVisible(true);
}
invalidateOptionsMenu();
}
您可以通過實現如下簡單地完成你的任務:使用以下行我已經做了在菜單中添加值
private Menu menu;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.drive_menu, menu);
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
this.menu = menu;
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_toggle_grid) {
handleMenuOption(id);
return true;
} else if(id == R.id.action_toggle_list){
handleMenuOption(id);
return true;
}
return super.onOptionsItemSelected(item);
}
private void handleMenuOption(int id) {
MenuItem item = menu.findItem(id);
if (id == R.id.action_toggle_grid){
item.setVisible(false);
menu.findItem(R.id.action_toggle_list).setVisible(true);
}else if (id == R.id.action_toggle_list){
item.setVisible(false);
menu.findItem(R.id.action_toggle_grid).setVisible(true);
}
}
getActivity().invalidateOptionsMenu();
嘗試這項工作就像一個魅力給我。
如果你有一個BottomBar:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (mBottomBar.getCurrentTabId() == R.id.tab_more) {
getMenuInflater().inflate(R.menu.more_menu, menu);
}
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.preferences:
startActivity(new Intent(this, PreferenceActivity.class));
break;
}
return super.onOptionsItemSelected(item);
}
然後你只需要調用:
@Override
public void onBottomBarClick(int tabId) {
supportInvalidateOptionsMenu();
}
- 1. 如何以編程方式更改選項菜單中的項目?
- 2. 以編程方式從Eclipse插件更改菜單項
- 3. 以編程方式更改菜單項標題
- 4. 側邊菜單,以編程方式隱藏菜單選項
- 5. Android選項菜單不會更改
- 6. e4 RCP:以編程方式修改主菜單項
- 7. 如何以編程方式更改選項菜單的子項目選擇顏色?
- 8. 以編程方式關閉選項菜單
- 9. 如何以編程方式打開選項菜單?
- 10. 如何以編程方式更改Windows更新選項?
- 11. 在Jquery中以編程方式更改選項卡和選項卡的內容
- 12. 菜單項文本顏色以編程方式更改不起作用?
- 13. 如何以編程方式更改選項卡?
- 14. 以編程方式更改ASP.NET C#選項卡標題文本
- 15. 如何以編程方式更改Access中的選項?
- 16. 如何以編程方式更改(UITabViewController的)選項卡?
- 17. 以編程方式通過react-bootstrap更改活動選項卡
- 18. fltk以編程方式更改選項卡組
- 19. 如何以編程方式更改Highcharts中的顏色選項?
- 20. 如何以編程方式更改選項卡在MATLAB GUI
- 21. adb以編程方式更改開發人員設置選項
- 22. 當使用idTabs時,以編程方式更改選項卡
- 23. 我想以編程方式更改Internet選項
- 24. 如何以編程方式更改Eclipse首選項
- 25. 以編程方式編譯Android項目
- 26. UITableView以編程方式選擇選項
- 27. 以編程方式更改Android AlertDialog中的單個項目背景顏色
- 28. 以編程方式修改UIToolBar項目
- 29. 以編程方式調用瀏覽器右鍵單擊菜單選項?
- 30. 以編程方式創建選項卡
你想要什麼樣的變化? –