歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android UI之Memu菜單

Android UI之Memu菜單

日期:2017/3/1 10:24:45   编辑:Linux編程

1. options menu

按menu鍵顯示。 因為options menu在屏幕底部最多只能顯示6個菜單項,這些菜單項稱為icon menu,icon menu只支持文字(title) 以及icon,可以設置快捷鍵,不支持checkbox以及radio控件,所以不能設置checkable選項。而多於6的菜單項會以“more” icon menu來調出,稱為expanded menu。它不支持icon,其他的特性都和icon menu一樣!

兩種使用方式:

(1)通過xml配置, menu.xml:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <menu xmlns:Android="http://schemas.android.com/apk/res/android" >
  3. <item
  4. android:id="@+id/about"
  5. android:title="About"/>
  6. <item
  7. android:id="@+id/exit"
  8. android:title="Exit"/>
  9. </menu>
java代碼:
  1. public boolean onCreateOptionsMenu(Menu menu) {
  2. MenuInflater inflater = getMenuInflater();
  3. inflater.inflate(R.layout.menu, menu);
  4. return super.onCreateOptionsMenu(menu);
  5. }
  6. @Override
  7. public boolean onOptionsItemSelected(MenuItem item) {
  8. int item_id = item.getItemId();
  9. switch (item_id) {
  10. case R.id.about:
  11. Toast.makeText(this, "about", Toast.LENGTH_SHORT).show();
  12. break;
  13. case R.id.exit:
  14. Toast.makeText(this, "exit", Toast.LENGTH_SHORT).show();
  15. break;
  16. }
  17. return true;
  18. }
(2) 通過代碼:
  1. <span style="white-space:pre"> </span>public boolean onCreateOptionsMenu(Menu menu) {
  2. Log.i("com.test", "------------onCreateOptionsMenu"); // 只執行一次
  3. menu.add(0, 1, 1, "菜單1"); // 第二個屬性itemId,第三個屬性order
  4. menu.add(0, 2, 2, "菜單2");
  5. return super.onCreateOptionsMenu(menu);
  6. }
  7. private boolean mIsChange = false;
  8. @Override
  9. public boolean onPrepareOptionsMenu(Menu menu) {
  10. Log.i("com.test", "------------onPrepareOptionsMenu"); // 每次都執行
  11. if (mIsChange) {
  12. mIsChange = false;
  13. menu.getItem(1).setTitle("注銷");
  14. } else {
  15. mIsChange = true;
  16. menu.getItem(1).setTitle("登錄");
  17. }
  18. return super.onPrepareOptionsMenu(menu);
  19. }
  20. @Override
  21. public boolean onOptionsItemSelected(MenuItem item) {
  22. switch (item.getItemId()) { // itemId
  23. case 1:
  24. Toast.makeText(this, "111", Toast.LENGTH_SHORT).show();
  25. break;
  26. case 2:
  27. Toast.makeText(this, "222", Toast.LENGTH_SHORT).show();
  28. break;
  29. }
  30. return true;
  31. }

2. context menu

在相應的view上按幾秒後顯示

  • Activity::registerForContextMenu(View view) 為某個view注冊context menu,一般在Activity::onCreate裡面調用。
  • Activity::onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)創建context menu,和options menu不同,context meun每次顯示時都會調用這個函數。
  • Activity::onContextItemSelected(MenuItem item) 處理選中的菜單項。
java代碼:
  1. @Override
  2. public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
  3. menu.add(0, 1, 1, "中國");
  4. menu.add(0, 2, 2, "美國");
  5. menu.add(0, 3, 3, "日本");
  6. super.onCreateContextMenu(menu, v, menuInfo);
  7. }
  8. @Override
  9. public boolean onContextItemSelected(MenuItem item) {
  10. switch (item.getItemId()) {
  11. case 1:
  12. Toast.makeText(this, "中國", Toast.LENGTH_SHORT).show();
  13. break;
  14. case 2:
  15. Toast.makeText(this, "美國", Toast.LENGTH_SHORT).show();
  16. break;
  17. case 3:
  18. Toast.makeText(this, "日本", Toast.LENGTH_SHORT).show();
  19. break;
  20. }
  21. return super.onContextItemSelected(item);
  22. }

3. sub menu

以上兩種menu都可以加入子菜單,但是子菜單不能嵌套子菜單,最多兩層。子菜單不支持icon

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved