歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android UI之Memu菜單

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.   
  7. @Override  
  8. public boolean onOptionsItemSelected(MenuItem item) {  
  9.     int item_id = item.getItemId();  
  10.     switch (item_id) {  
  11.     case R.id.about:  
  12.         Toast.makeText(this"about", Toast.LENGTH_SHORT).show();  
  13.         break;  
  14.     case R.id.exit:  
  15.         Toast.makeText(this"exit", Toast.LENGTH_SHORT).show();  
  16.         break;  
  17.     }  
  18.     return true;  
  19. }  
(2) 通過代碼:
  1. <span style="white-space:pre">    </span>public boolean onCreateOptionsMenu(Menu menu) {  
  2.         Log.i("com.test""------------onCreateOptionsMenu"); // 只執行一次   
  3.         menu.add(011"菜單1"); // 第二個屬性itemId,第三個屬性order   
  4.         menu.add(022"菜單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.   
  21.     @Override  
  22.     public boolean onOptionsItemSelected(MenuItem item) {  
  23.         switch (item.getItemId()) { // itemId   
  24.         case 1:  
  25.             Toast.makeText(this"111", Toast.LENGTH_SHORT).show();  
  26.             break;  
  27.         case 2:  
  28.             Toast.makeText(this"222", Toast.LENGTH_SHORT).show();  
  29.             break;  
  30.         }  
  31.         return true;  
  32.     }  

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(011"中國");  
  4.     menu.add(022"美國");  
  5.     menu.add(033"日本");  
  6.     super.onCreateContextMenu(menu, v, menuInfo);  
  7. }  
  8.   
  9. @Override  
  10. public boolean onContextItemSelected(MenuItem item) {  
  11.     switch (item.getItemId()) {  
  12.     case 1:  
  13.         Toast.makeText(this"中國", Toast.LENGTH_SHORT).show();  
  14.         break;  
  15.     case 2:  
  16.         Toast.makeText(this"美國", Toast.LENGTH_SHORT).show();  
  17.         break;  
  18.     case 3:  
  19.         Toast.makeText(this"日本", Toast.LENGTH_SHORT).show();  
  20.         break;  
  21.     }  
  22.     return super.onContextItemSelected(item);  
  23. }  

3. sub menu

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

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

Copyright © Linux教程網 All Rights Reserved