Android_轉載_creating menus_創建Menus

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  


 

@方法2  在xml文件中定義好
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.}  


 

菜單選項還有許多其他的特性. 包括,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 ,

本文章轉載自http://blog.csdn.net/Jason69181/article/details/6069673

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章