歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android之通過xml設置Menu選項

Android之通過xml設置Menu選項

日期:2017/3/1 11:17:14   编辑:Linux編程

一種簡單方便的方法就是通過XML文件來配置Menu菜單,設置的時候用Menu或者MenuInflater

通常情況下,覆寫Menu按鍵按下去的時候的回調函數onCreateOptionsMenu

在該函數中配置Menu

  1. MenuInflater inflater = getMenuInflater();
  2. inflater.inflate(R.menu.groups, menu);
該菜單對應的資源文件為res/menu/groups.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <menu xmlns:Android="http://schemas.android.com/apk/res/android">
  3. <item android:id="@+id/browser_visibility"
  4. android:title="@string/browser_visibility" />
  5. <group android:id="@+id/browser">
  6. <item android:id="@+id/refresh"
  7. android:title="@string/browser_refresh" />
  8. <item android:id="@+id/bookmark"
  9. android:title="@string/browser_bookmark" />
  10. </group>
  11. <item android:id="@+id/email_visibility"
  12. android:title="@string/email_visibility" />
  13. <group android:id="@+id/email">
  14. <item android:id="@+id/reply"
  15. android:title="@string/email_reply" />
  16. <item android:id="@+id/forward"
  17. android:title="@string/email_forward" />
  18. </group>
  19. </menu>

當菜單中某一選項被按下的時候,通常覆寫回調函數onOptionsItemSelected

  1. switch (item.getItemId()) {
  2. case R.id.browser_visibility:
  3. //對浏覽組顯示或者隱藏
  4. final boolean shouldShowBrowser = !mMenu.findItem(R.id.refresh).isVisible();
  5. mMenu.setGroupVisible(R.id.browser, shouldShowBrowser);
  6. break;
  7. case R.id.email_visibility:
  8. // 對email組進行顯示或者隱藏
  9. final boolean shouldShowEmail = !mMenu.findItem(R.id.reply).isVisible();
  10. mMenu.setGroupVisible(R.id.email, shouldShowEmail);
  11. break;
  12. // 默認選項會給出提示信息
  13. default:
  14. if (!item.hasSubMenu()) {
  15. Toast.makeText(this, item.getTitle(),Toast.LENGTH_SHORT).show();
  16. return true;
  17. }
  18. break;
  19. }

mMenu是一個全局的私有變量

如果一個應用程序中包含多個Activity,並且想在每個Actiivty中都顯示Menu的話,可以考慮創建一個Activity,實現onCreateOptionsMenu()和onOptionItemSelected()兩個方法,其他的Activity在實現的時候,繼承該類就可以了

這樣只需要管理一組Menu就可以了

如果需要添加菜單的話,只需要覆寫onCreateOptionMenu()方法,並且調用super.onCreateOptionsMenu(menu)以便顯示原來的Menu,然後用menu.add()來添加

Copyright © Linux教程網 All Rights Reserved