Creating Menus
android 菜單包括三種.Options Menu , Context Menu 和Submenu.
- 1.Options Menu(選項菜單)
@方法1
需要重寫public boolean onCreateOptionsMenu(Menu menu)和public boolean onOptionsItemSelected(MenuItem item)方法,可用如下代碼,添加menuitem
01.@Override
02. public boolean onOptionsItemSelected(MenuItem item) {
03. // TODO Auto-generated method stub
04. switch(item.getItemId()) {
05. case 1://id可以是用menu.add方法生成的數字,也可是用xml文件生成的R.id.XX
06. System.out.println("new clicked");
07. return true;
08.
09. }
10. return super.onOptionsItemSelected(item);
11. }
12. @Override
13. public boolean onCreateOptionsMenu(Menu menu) {
14. // TODO Auto-generated method stub
15. menu.add(0, 1, 1, "new");
16. menu.add(0, 2, 2, "open");
17. menu.add(0, 3, 3, "close");
18. menu.add(0, 4, 4, "start");
19. menu.add(0, 5, 5, "about");
20. menu.add(0, 6, 6, "restart");
21. menu.add(0, 7, 7, "reopen");
22. SubMenu sub = menu.addSubMenu(0, 2, 2, "含子菜單");
23. Resources res = getBaseContext().getResources();
24. sub.setIcon(res.getDrawable(R.drawable.icon));
25. sub.setHeaderIcon(res.getDrawable(R.drawable.icon));
26. sub.add(1, 3, 0, "Menu A1");
27. sub.add(1, 4, 1, "Menu A2");
28. return super.onCreateOptionsMenu
01.<?xml version="1.0" encoding="utf-8"?>
02.<menu xmlns:android="http://schemas.android.com/apk/res/android">
03. <item android:id="@+id/new_game"
04. android:icon="@drawable/ic_new_game"
05. android:title="@string/new_game" />
06. <item android:id="@+id/quit"
07. android:icon="@drawable/ic_quit"
08. android:title="@string/quit" />
09.</menu>
並在java文件中.調用如下方法
01.@Override
02.public boolean onCreateOptionsMenu(Menu menu) {
03. MenuInflater inflater = getMenuInflater();
04. inflater.inflate(R.menu.game_menu, menu);
05. return true;
06.}
2.Context Menu(上下文菜單,類似windows下的右鍵菜單)
(有點類似android中的dialog對話框.)- 一般,contextMenu多用於ListView 視圖中,當用戶持續按住一個listItem的時候.就可以彈出ContextMenu來.並執行需要的功能.
- 可用如下代碼生成contextMenu:
- 並需要調用
registerForContextMenu()對contextMenu進行註冊;
01.@Override
02. public void onCreateContextMenu(ContextMenu menu, View v,
03. ContextMenuInfo menuInfo) {
04. // TODO Auto-generated method stub
05. menu.setHeaderTitle("ContextMenu");
06. menu.add(0, 0, 0, "contextMenuItem 0");
07. menu.add(0, 1, 0, "contextMenuItem 1");
08. super.onCreateContextMenu(menu, v, menuInfo);
09. }
10. //長按菜單響應函數
11. @Override
12. public boolean onContextItemSelected(MenuItem item) {
13. setTitle("contextMenuItem"+item.getItemId()+"Clicked");
14. return super.onContextItemSelected(item);
15. }
我在網上發現另一種不用調用
registerForContextMenu()的方法代碼如下:
01.list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
02.
03. @Override
04. public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
05. menu.setHeaderTitle("ContextMenu");
06. menu.add(0, 0, 0, "contextMenuItem0");
07. menu.add(0, 1, 0, "contextMenuItem1");
08. }
09. });
直接將list綁定到list.setOnCreateContextMenuListener(new OnCreateContextMenuListener()接口並在其中用匿名類寫相應的代碼.
3.Submenu(子菜單,類似windows下,右鍵菜單中,黑色三角形指向的菜單)
當然也可以用兩種方式生成.一種是通過xml文件,一種是java中直接寫代碼. android的文檔中,只是簡單的描述了下,用xml文件設的子菜單.我用的後一種方法.代碼如下:
01.@Override
02.public boolean onCreateOptionsMenu(Menu menu) {
03. // TODO Auto-generated method stub
04.
05. SubMenu sub = menu.addSubMenu(0, 2, 2, "含子菜單");
06. Resources res = getBaseContext().getResources();
07. sub.setIcon(res.getDrawable(R.drawable.icon));
08. sub.setHeaderIcon(res.getDrawable(R.drawable.icon));
09. sub.add(1, 3, 0, "Menu A1");
10. sub.add(1, 4, 1, "Menu A2");
11. return super.onCreateOptionsMenu(menu);
12.}
包括 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 ,
本文章轉載自http://blog.csdn.net/Jason69181/article/details/6069673