Android_文檔學習_UI_creating menus

來源:互聯網
上載者:User
文章目錄
  • Creating Menus
Creating Menus

android 菜單包括三種.Options Menu , Context Menu   和Submenu.

本文完整代碼 CSDN下載頻道 :http://download.csdn.net/source/2900952 ,

1.Options Menu(選項菜單)

@方法1   
需要重寫public boolean onCreateOptionsMenu(Menu menu)和
public boolean onOptionsItemSelected(MenuItem item)方法,
可用如下代碼,添加menuitem

[java] view plaincopy

  1. @Override
  2. public boolean onOptionsItemSelected(MenuItem item) { 
  3. // TODO Auto-generated method stub
  4. switch(item.getItemId()) { 
  5. case 1://id可以是用menu.add方法產生的數字,也可是用xml檔案產生的R.id.XX
  6.             System.out.println("new clicked"); 
  7. return true; 
  8.         } 
  9. return super.onOptionsItemSelected(item); 
  10.     } 
  11. @Override
  12. public boolean onCreateOptionsMenu(Menu menu) { 
  13. // TODO Auto-generated method stub
  14.         menu.add(0, 1, 1, "new"); 
  15.         menu.add(0, 2, 2, "open"); 
  16.         menu.add(0, 3, 3, "close"); 
  17.         menu.add(0, 4, 4, "start"); 
  18.         menu.add(0, 5, 5, "about"); 
  19.         menu.add(0, 6, 6, "restart"); 
  20.         menu.add(0, 7, 7, "reopen"); 
  21.         SubMenu sub = menu.addSubMenu(0, 2, 2, "含子功能表"); 
  22.         Resources res = getBaseContext().getResources(); 
  23.         sub.setIcon(res.getDrawable(R.drawable.icon)); 
  24.         sub.setHeaderIcon(res.getDrawable(R.drawable.icon)); 
  25.         sub.add(1, 3, 0, "Menu A1"); 
  26.         sub.add(1, 4, 1, "Menu A2"); 
  27. return super.onCreateOptionsMenu 

@方法2
在xml檔案中定義好

[xhtml] view plaincopy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <menu xmlns:android="http://schemas.android.com/apk/res/android">
  3. <item android:id="@+id/new_game"
  4. android:icon="@drawable/ic_new_game"
  5. android:title="@string/new_game" />
  6. <item android:id="@+id/quit"
  7. android:icon="@drawable/ic_quit"
  8. android:title="@string/quit" />
  9. </menu>

並在java檔案中.調用如下方法

[java] view plaincopy

  1. @Override
  2. public boolean onCreateOptionsMenu(Menu menu) { 
  3.     MenuInflater inflater = getMenuInflater(); 
  4.     inflater.inflate(R.menu.game_menu, menu); 
  5. return true; 




2.Context Menu(操作功能表,類似windows下的右鍵菜單)
(有點類似android中的dialog對話方塊.)
一般,contextMenu多用於ListView 視圖中,當使用者持續按住一個listItem的時候.就可以彈出ContextMenu來.並執行需要的功能.
可用如下代碼產生contextMenu:
並需要調用 registerForContextMenu()對contextMenu進行註冊;

[java] view plaincopy

  1. @Override
  2. public void onCreateContextMenu(ContextMenu menu, View v, 
  3.             ContextMenuInfo menuInfo) { 
  4. // TODO Auto-generated method stub
  5.         menu.setHeaderTitle("ContextMenu");    
  6.         menu.add(0, 0, 0, "contextMenuItem 0"); 
  7.         menu.add(0, 1, 0, "contextMenuItem 1");   
  8. super.onCreateContextMenu(menu, v, menuInfo); 
  9.     } 
  10. //長按菜單響應函數
  11. @Override
  12. public boolean onContextItemSelected(MenuItem item) { 
  13.         setTitle("contextMenuItem"+item.getItemId()+"Clicked");  
  14. return super.onContextItemSelected(item); 
  15.     } 
我在網上發現另一種不用調用 registerForContextMenu()的方法代碼如下:

[java] view plaincopy

  1. list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() { 
  2. @Override
  3. public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) { 
  4.                 menu.setHeaderTitle("ContextMenu");    
  5.                 menu.add(0, 0, 0, "contextMenuItem0"); 
  6.                 menu.add(0, 1, 0, "contextMenuItem1");    
  7.             } 
  8.         }); 

直接將list綁定到list.setOnCreateContextMenuListener(new OnCreateContextMenuListener()
介面並在其中用匿名類寫相應的代碼.
3.Submenu(子功能表,類似windows下,右鍵菜單中,黑色三角形指向的菜單)
當然也可以用兩種方式產生.一種是通過xml檔案,一種是java中直接寫代碼.
android的文檔中,只是簡單的描述了下,用xml檔案設的子功能表.
我用的後一種方法.代碼如下:

[java] view plaincopy

  1. @Override
  2. public boolean onCreateOptionsMenu(Menu menu) { 
  3. // TODO Auto-generated method stub
  4.     SubMenu sub = menu.addSubMenu(0, 2, 2, "含子功能表"); 
  5.     Resources res = getBaseContext().getResources(); 
  6.     sub.setIcon(res.getDrawable(R.drawable.icon)); 
  7.     sub.setHeaderIcon(res.getDrawable(R.drawable.icon)); 
  8.     sub.add(1, 3, 0, "Menu A1"); 
  9.     sub.add(1, 4, 1, "Menu A2"); 
  10. return super.onCreateOptionsMenu(menu); 
菜單選項還有許多其他的特性.
包括,menu Groups,將按鈕分組,菜單分組,可以方便的將組中的菜單visiable屬性,Enable屬性,checkable屬性,一齊改變.
包括 Checkable menu items,用類似checkbox的屬性或者radiobutton的屬性.
包括Shortcut keys(快速鍵),
包括intent for menu items(android中用於activity間傳輸資料的一種方式).
包括Dynamically adding Intents(動態增加intent).
包括Allowing your Activity to be added to menus(允許activty被增加到多個功能表項目中)等.
本文完整代碼CSDN下載頻道:http://download.csdn.net/source/2900952 ,
由於小生初學android,好多問題都是一知半解.希望看到本文的同學.能夠多多支援.並增加交流.
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.