Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> android中菜單(menu)的基本知識,androidmenu

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

編輯:關於android開發

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         // 希望顯示菜單就返回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     

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

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved