安卓菜单的实现,各种添加菜单的方法。

(一)选项菜单

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     

时间: 2024-08-24 21:45:08

安卓菜单的实现,各种添加菜单的方法。的相关文章

微信公众号接口添加菜单时错误(errcode":40017 invalid button type)

POST提交时总是报错: {"errcode":40017,"errmsg":"invalid button type"} 最后查出来是由于数据中有中文引起的 解决: data = {"button":[ {"name": u"会员服务", "sub_button":[ {"type":"click","name&qu

java添加菜单项目

java添加菜单项目,布布扣,bubuko.com

MFC对话框动态添加菜单

.添加菜单资源 2.添加一个菜单,添加菜单项 如图所示: 3.加入WM_CREATE消息 代码如下: 1 int CDemoDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) 2 { 3     if (CDialogEx::OnCreate(lpCreateStruct) == -1) 4         return -1; 5  6     // TODO:  Add your specialized creation code here 7     

Android 应用添加菜单

通过编写一个简单的 app 应用,发现对 Android 学习又多了一些心得.学习新知识还是要一开始就动动手,,过程痛苦,但是效果还是不错的. 本次主要记录一下添加菜单的一些方法: 为 Android 应用添加菜单主要有三个步骤 1.创建菜单.Android 提供了两种创建菜单的方式,一种是在 Java 文件中创建,一种是使用 XML 资源文件定义: 例如:memu.xml <?xml version="1.0" encoding="utf-8"?> &

VC++2010添加菜单

1  资源视图下面右键添加资源 选择menu 2  创建你想要的menu 3  找到CDialog::OnInitDialog();在后面添加代码. CMenu menu; menu.LoadMenuW(IDR_MENU1); SetMenu(&menu); VC++2010添加菜单

通过VBA在Excel中添加菜单和菜单项按钮(Excel启动时候添加)

将以下代码保存到.xlam或.xla(Excel97-2003)文件. 在ThisWorkBook对象中,添加Workbook_Open事件,调用启动菜单过程. Private Sub Workbook_Open() Call MenuSetup(True) End Sub '----------------------------------------------- '在Excel中添加菜单和菜单项按钮(Excel启动时候添加) '------------------------------

###添加菜单文件

添加菜单XML 1) 在res中创建一个menu的文件夹 2) 在文件夹中创建一个main.xml的类 3) 添加代码 <item android:id=”添加id” android:title=”显示内容”></item> 在活动中显示 1)     在活动中重写onCreateOptionsMenu方法 public boolean onCreateOptionsMenu(Menu menu) { 2)       // TODO Auto-generated method s

如何在VS2010的VC++ 基于对话框的MFC程序中添加菜单

方法1:亲测 成功  转载自https://social.msdn.microsoft.com/Forums/vstudio/zh-CN/48338f6b-e5d9-4c0c-8b17-05ca3ef1f761/vs2010dialog 你可以创建菜单作为一种资源,然后将它附加到对话框.打开dialog“属性”对话框,你可以看到一个Menu属性,最终我们将在这里指定一个我们自己创建的菜单ID. 具体步骤如下: •在资源视图中右键单击工程名,插入一个新的菜单.这个菜单会有一个ID(例如:IDR_M

Jtable添加菜单

package com.batc.ecn.icon; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.util.Vector; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.JTable; imp