安卓菜單的實現,各種添加菜單的方法。


(一)選項菜單

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 // 希望顯示菜單就返回true 13 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 here 10 break; 11 case 3: 12 // do something here 13 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  @Override 19 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  @Override 34 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  @Override 48 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 <item 15 android:icon="@drawable/ic_launcher" 16  android:id="@+id/item1_1" 17  android:title="子菜單內選項1"/> 18 <item 19 android:id="@+id/item1_2" 20  android:title="子菜單內選項2"/> 21 </menu> 22 </item> 23 <item 24 android:id="@+id/item2" 25  android:title="菜單選項2"> 26 </item> 27 </group> 28 <group android:id="@+id/group2" > 29 <item 30 android:id="@+id/item3" 31  android:title="菜單選項4"> 32 </item> 33 <item 34 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 <item 11 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 
復制代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM