android中菜單(menu)的基本知識,androidmenu

來源:互聯網
上載者:User

android中菜單(menu)的基本知識,androidmenu

(一)選項菜單

1、簡單的建立菜單:

 1 @Override 2     public boolean onCreateOptionsMenu(Menu menu) { 3         super.onCreateOptionsMenu(menu); 4  5         // 添加菜單 6         menu.add("菜單選項1"); 7         /* 8          * pram1:組號 pram2:唯一的ID號 pram3:排序號 pram4:標題 9          */10         menu.add(1, Menu.FIRST, Menu.FIRST, "菜單選項2");11 12         // 希望顯示菜單就返回true13         return true;14     }

2、菜單的分組以及簡單屬性:

 1 @Override 2     public boolean onCreateOptionsMenu(Menu menu) { 3         super.onCreateOptionsMenu(menu); 4  5         int group1 = 1; 6         int group2 = 2; 7         menu.add(group1, 1, 1, "item1"); 8         menu.add(group1, 2, 2, "item2"); 9         menu.add(group2, 3, 3, "item3");10         menu.add(group2, 4, 4, "item4");11 12         // menu.removeGroup(group1);//刪除一個組13         // menu.setGroupVisible(group1, false);//設定可見度14         // menu.setGroupEnabled(group2, false);//設定是否可點15         // menu.setGroupCheckable(group2, true, t);//設定一組菜單的勾選情況16         return true;17     }

3、響應菜單

一、通過onOptionsItemSelected方法

 1 @Override 2     public boolean onOptionsItemSelected(MenuItem item) { 3         // 響應每個功能表項目(通過功能表項目的ID) 4         switch (item.getItemId()) { 5         case 1: 6             // do something here 7             break; 8         case 2: 9             // do something here10             break;11         case 3:12             // do something here13             break;14         case 4:15             Toast.makeText(this, "hello", 0).show();16             break;17         default:18             // 對沒有處理的事件,交給父類來處理19             return super.onOptionsItemSelected(item);20         }21          //返回true表示處理完功能表項目的事件,不需要將該事件繼續傳播下去了22         return true;23     }

二、通過監聽

 1 //第一步:建立監聽器類 2 class MyMenuItemClickListener implements OnMenuItemClickListener { 3     @Override 4     publicboolean onMenuItemClick(MenuItem item) { 5         // do something here... 6         return   true;    //finish handling 7     } 8 } 9 //第二步:為功能表項目註冊監聽器10 menuItem.setOnMenuItemClickListener(new MyMenuItemClickListener());

 三、通過Intent

 

(二)子功能表subMenu

注意:Menu可以包含多個SubMenu及menuItem,SubMenu可以包含多個MenuItem,,但是SubMenu不能包含SubMenu。

 1 @Override 2     public boolean onCreateOptionsMenu(Menu menu) { 3         //一個menu中可以添加多個子功能表 4         SubMenu subMenu=menu.addSubMenu(1,1, 0, "子功能表"); 5          6         //在子功能表中添加多個菜單選項 7         MenuItem menuItem1=subMenu.add(1, 1, 0, "菜單選項1"); 8         subMenu.add(1, 2, 1,"菜單選項2"); 9         subMenu.add(1, 3, 2,"菜單選項3");10         subMenu.add(1, 4, 3,"菜單選項4");11         12         //子功能表不支援顯示表徵圖,儘管這樣設定不會報錯13         subMenu.setIcon(R.drawable.ic_launcher);14         15         //設定菜單選項的表徵圖16         menuItem1.setIcon(R.drawable.ic_launcher);17         return true;18     }

 

(三)操作功能表ContextMenu

 1 package com.zzw.contextMenu; 2  3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.util.Log; 6 import android.view.ContextMenu; 7 import android.view.ContextMenu.ContextMenuInfo; 8 import android.view.MenuItem; 9 import android.view.View;10 import android.widget.ArrayAdapter;11 import android.widget.ListView;12 import android.widget.Toast;13 14 public class MainActivity extends Activity {15     private static final String TAG = "MainActivity";16     ListView listView;17 18     @Override19     protected void onCreate(Bundle savedInstanceState) {20         Log.d(TAG, "onCreate");21 22         super.onCreate(savedInstanceState);23         setContentView(R.layout.activity_main);24         listView = (ListView) findViewById(R.id.listView);25 26         simpleShowList();27         //1.在activity的onCreate方法中為一個view註冊操作功能表28         this.registerForContextMenu(listView);29 30     }31     32     //2.在onCreateContextMenu中產生操作功能表。33     @Override34     public void onCreateContextMenu(ContextMenu menu, View v,35             ContextMenuInfo menuInfo) {36         Log.d(TAG, "onCreateContextMenu_start");37 38         menu.setHeaderTitle("操作功能表標題");39         menu.add(0, 1, 0, "選項1");40         menu.add(0, 2, 0, "選項2");41         menu.add(0, 3, 0, "選項3");42         43         Log.d(TAG, "onCreateContextMenu_stop");44     }45     46     //3.在onContextItemSelected中響應操作功能表項目。47     @Override48     public boolean onContextItemSelected(MenuItem item) {49         Log.d(TAG, "onContextItemSelected_start");50         int item_id = item.getItemId();51         switch (item_id) {52         case 1:53             Toast.makeText(this, "我是操作功能表選項1", 0).show();54             break;55         case 2:56 57             break;58         case 3:59 60             break;61 62         default:63             return super.onContextItemSelected(item);64         }65         Log.d(TAG, "onContextItemSelected_stop");66         return true;67     }68 69     private void simpleShowList() {70         Log.d(TAG, "simpleShowList_start");71         String[] showList = { "顯示1", "顯示2", "顯示3", "顯示4" };72 73         ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,74                 android.R.layout.simple_expandable_list_item_1, showList);75 76         listView.setAdapter(adapter);77         Log.d(TAG, "simpleShowList_stop");78     }79 80 }

 

 

(四)通過XML檔案添加菜單

1.在res檔案下建立menu檔案夾,一般預設有的,在裡面new出一個Android xml File來編輯自己的菜單

2.編輯自己的xml

 1 <?xml version="1.0" encoding="utf-8"?> 2 <menu xmlns:android="http://schemas.android.com/apk/res/android" > 3  4     <!-- group是分組 --> 5     <group android:id="@+id/group1" > 6  7         <!-- item是一個菜單選項 --> 8         <item 9             android:id="@+id/item1"10             android:title="菜單選項1(子功能表)">11             <!-- 在一個item中添加一個menu就是子功能表 -->12             <menu>13                 <!-- 子功能表中的菜單選項 -->14                 <item15                      android:icon="@drawable/ic_launcher"16                     android:id="@+id/item1_1"17                     android:title="子功能表內選項1"/>18                 <item19                     android:id="@+id/item1_2"20                     android:title="子功能表內選項2"/>21             </menu>22         </item>23         <item24             android:id="@+id/item2"25             android:title="菜單選項2">26         </item>27     </group>28     <group android:id="@+id/group2" >29         <item30             android:id="@+id/item3"31             android:title="菜單選項4">32         </item>33         <item34             android:id="@+id/item4"35             android:title="菜單選項5">36         </item>37     </group>38 39 </menu>

3.在activity中擷取:

 1 @Override 2     public boolean onCreateOptionsMenu(Menu menu) { 3         MenuInflater in = getMenuInflater(); 4         in.inflate(R.menu.main, menu); 5         return true; 6     } 7  8     @Override 9     public boolean onOptionsItemSelected(MenuItem item) {10         switch (item.getItemId()) {11         case R.id.item1:12            13             break;14         case R.id.item2:15 16             break;17         18         default:19             return super.onOptionsItemSelected(item);20         }21 22         return true;23     }

 

 

一些基本的屬性:

設定菜單icon

1 <item 2         android:id="@+id/item1"3         android:title="菜單選項1"4         android:icon="@drawable/ic_launcher"5         />

設定菜單選項的可選,android:checkableBehavior,chencked

 1  <!-- checkableBehavior設定可選 --> 2     <group android:id="@+id/group1" 3         android:checkableBehavior="all" > 4         <!-- checked設定特定功能表項目(被勾中) --> 5         <item 6             android:id="@+id/item1" 7             android:title="菜單選項1" 8             > 9         </item>10         <item11             android:id="@+id/item2"12             android:checked="true"13             android:title="菜單選項2">14         </item>15     </group>

 

設定菜單可用不可用android:enable

 1  <group android:id="@+id/group1"> 2         <item 3             android:id="@+id/item1" 4             android:title="菜單選項1" 5             android:enabled="true" 6             > 7         </item> 8         <item 9             android:id="@+id/item2"10             android:title="菜單選項2"11              android:enabled="false">12         </item>13     </group>

 

設定菜單選項是否可見android:visible

 1  <group android:id="@+id/group1"> 2         <item 3             android:id="@+id/item1" 4             android:title="菜單選項1" 5             android:visible="true" 6             > 7         </item> 8         <item 9             android:id="@+id/item2"10             android:title="菜單選項2"11              android:visible="false">12         </item>13     </group>14     

 詳解請見:http://www.cnblogs.com/codingmyworld/archive/2011/08/21/2147829.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.