Android菜单的有这几种:

  1,OptionMenue:选项菜单
  2,contextMenu:上下文菜单
  3,SubMenu子菜单

其中,OptionMenue与contextMenu的区别(OptionMenue与SubMenu区别较小):
  1,OptionMenue对应的四activity,一个activity只能拥有一个选项菜单
  2,contextMenu对于的是View,每一个View都可以设置上下文菜单
  3,一般情况下contextMenu常用于ListView或者GridView;

下面分别进行详细的介绍:

第一:OptionMenue:选项菜单,

  1):菜单的实现:

    在activity中实现方法:onCreateOptionsMenu()

    1.1:设置菜单项可用代码动态设置menuadd();
        1.2:通过xml设置,getMenuInflater().inflate

  2):监听的实现:

    在activity中实现方法:onCreateOptionsMenu()

    示例如下:

    @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.action_menu_item1:
//设置跳转界面
Intent intent = new Intent(MainActivity.this, SettingActivity.class);
item.setIntent(intent);
//Toast.makeText(this, "点击了菜单1", 0).show();
break;
case R.id.action_menu_item2:
Toast.makeText(this, "点击了菜单2", 0).show();
break;
} return super.onOptionsItemSelected(item);
}

其中main.xml的实现如下:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.optionmenu.MainActivity" > <item
android:id="@+id/action_menu_item1"
android:orderInCategory="100"
android:showAsAction="never"
android:title="设置"/> <item
android:id="@+id/action_menu_item2"
android:orderInCategory="100"
android:showAsAction="never"
android:title="选项"/>
</menu>

第二:contextMenu:上下文菜单(windows下右键的弹出,Android下针对文件长按):

构成:图标,标题,菜单项,监听

创建方法:
  1,在View注册上下文菜单registerForContextMenu()
  2,添加上下文菜单内容onCreateContextMenu()
    2.1:可以通过代码动态添加
    2.2:可以加载xml文件夹中的菜单项
  3,设置菜单点击后的响应事件onContenxtItemSelected();

示例:mainActivity的实现如下:

public class MainActivity extends Activity {

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
showListView();
}
  //设置展示的列表
private void showListView(){
ListView listView = (ListView) findViewById(R.id.listview);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, getData());
listView.setAdapter(adapter);
this.registerForContextMenu(listView);//设置菜单选项
}
   //为列表设置数据
private ArrayList<String> getData(){
ArrayList<String> list = new ArrayList<String>();
for(int i=0;i<15;i++){
list.add("列表"+i);
}
return list;
} @Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
//设置菜单显示内容
menu.setHeaderTitle("操作");
  //方法二:通过xml进行选项的设置
menu.setHeaderIcon(R.drawable.ic_launcher);
  //方法一:通过add动态的添加
// menu.add(1, 1, 1, "复制");
// menu.add(1, 2, 1, "粘贴");
// menu.add(1, 3, 1, "剪切");
// menu.add(1, 4, 1, "重命名");
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) {
case 1:
Toast.makeText(this, "点击复制", 0).show();
break;
case 2:
Toast.makeText(this, "点击粘贴", 0).show();
break;
case 3:
Toast.makeText(this, "点击剪切", 0).show();
break;
case 4:
Toast.makeText(this, "点击重命名", 0).show();
break;
}
return super.onContextItemSelected(item);
} }

第三:SubMenu子菜单:

这个实现起来和OptionMenue差不多,所需要实现的方法也是一致的,只是需要在onCreateOptionsMenu()方法中定义SubMenu

对象,

具体示例如下:

public class MainActivity extends Activity {

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
// getMenuInflater().inflate(R.menu.main, menu);
SubMenu file = menu.addSubMenu("文件");
SubMenu edit = menu.addSubMenu("编辑"); file.add(1, 1, 1, "新建");
file.add(1, 2, 1, "打开");
file.add(1, 3, 1, "保存");
file.setHeaderTitle("文件操作");
file.setHeaderIcon(R.drawable.ic_launcher); edit.add(2, 1, 1, "复制");
edit.add(2, 2, 1, "粘贴");
edit.add(2, 3, 1, "剪切");
edit.add(2, 4, 1, "重命名");
edit.setHeaderTitle("编辑操作");
edit.setHeaderIcon(R.drawable.ic_launcher); return true;
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
if(item.getGroupId()==1){
switch (item.getItemId()) {
case 1:
Toast.makeText(this, "点击新建", 0).show();
break;
case 2:
Toast.makeText(this, "点击打开", 0).show();
break;
case 3:
Toast.makeText(this, "点击保存", 0).show();
break;
}
}else if(item.getGroupId()==2){
switch (item.getItemId()) {
case 1:
Toast.makeText(this, "点击复制", 0).show();
break;
case 2:
Toast.makeText(this, "点击粘贴", 0).show();
break;
case 3:
Toast.makeText(this, "点击剪切", 0).show();
break;
case 4:
Toast.makeText(this, "点击重命名", 0).show();
break;
}
}
return super.onOptionsItemSelected(item);
}
}

作者:Darren

微博:@IT_攻城师

github:@Darren90

出处:http://www.cnblogs.com/fengtengfei/

android各种菜单使用介绍的更多相关文章

  1. Android滑动菜单框架完全解析,教你如何一分钟实现滑动菜单特效

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/8744400 之前我向大家介绍了史上最简单的滑动菜单的实现方式,相信大家都还记得.如 ...

  2. Android四大基本组件介绍与生命周期

    Android四大基本组件介绍与生命周期 Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器 ...

  3. Android侧滑菜单代码实现

    前两天学习了hyman老师讲的Android侧滑菜单的实现,经过自己的整理分享出来给大家学习一下 现在很多APP都有菜单侧滑的功能,本篇文章主要讲解使用自定义的HorizontalScrollView ...

  4. Android Testing学习01 介绍 测试测什么 测试的类型

    Android Testing学习01 介绍 测试测什么 测试的类型 Android 测试 测什么 1.Activity的生命周期事件 应该测试Activity的生命周期事件处理. 如果你的Activ ...

  5. Xamarin Android教程Android基本知识版本介绍与系统介绍

    Xamarin Android教程Android基本知识版本介绍与系统介绍 Xamarin Android教程Android基本知识版本介绍与系统介绍,开发Andriod有时候不像iOS一样轻松,因为 ...

  6. Android系统架构说明介绍

    Android系统架构说明介绍 Android系统架构和一些普遍的操作系统差不多,都是采用了分层的架构,从他们之间的架构图看,Android系统架构分为四个层,从高层到低层分别是应用程序层.应用程序框 ...

  7. Android SQLite 数据库详细介绍

    Android SQLite 数据库详细介绍 我们在编写数据库应用软件时,需要考虑这样的问题:因为我们开发的软件可能会安装在很多用户的手机上,如果应用使用到了SQLite数据库,我们必须在用户初次使用 ...

  8. 【转】Android 4.2蓝牙介绍

    原文网址:http://blog.csdn.net/innost/article/details/9187199 Tieto公司某蓝牙大牛写得<程序员>投稿文章 Android 4.2蓝牙 ...

  9. Android MVP模式 简单易懂的介绍方式

    主要学习这位大神的博客:简而易懂 Android MVP模式 简单易懂的介绍方式 https://segmentfault.com/a/1190000003927200

随机推荐

  1. [LUOGU] P2187 小Z的笔记

    看范围猜方程,应该是O(n)级别的 f[i]表示前i个合法的最小代价,转移需要枚举断点位置,O(n^2) f[i]表示前i个合法留下的最大个数,同时更新距离最近的26个字母的位置,O(n)转移 f[i ...

  2. 《C++专项练习》 — (2)

    序 C++基础专项练习二,,,水平依然不到家! 错题分析与总结 1 . 有如下模板定义: template <class T> T fun(T x,T y){ return x*x+y*y ...

  3. Hyperledger Fabric创建通道抛错Error: got unexpected status: FORBIDDEN -- Failed to reach implicit threshold of 1 sub-policies, required 1 remaining: permission denied解决方案

    安装Hyperledger Fabric,服务整个都跑起来了,但是抛了一个错,Error: got unexpected status: FORBIDDEN -- Failed to reach im ...

  4. zoj 1949 Error Correction

    Error Correction Time Limit: 2 Seconds      Memory Limit: 65536 KB A boolean matrix has the parity p ...

  5. Laya Tween循环

    Laya Tween循环 @author ixenos 需求:做一个循环的缓动动画 方案: 1)如果只是线性变化,那么直接使用timer或者frameLoop来变化 2)如果需要有非线性变化,那么使用 ...

  6. Linux核心参数Shmmax,shmall,shmni

    Linux 下核心参数调整 kernel.shmmax shmmax是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值,shmmax设置应足够大,能在一个共享内存段下容纳下整个的SGA,设置 ...

  7. 我是一个线程 - IBM刘欣

    来自:码农翻身(微信号:coderising) 作者:IBM刘欣 我是一个线程,我一出生就被编了个号: 0×3704,然后被领到一个昏暗的屋子里, 这里我发现了很多和我一模一样的同伴. 我身边的同伴0 ...

  8. 51nod1135 原根

    原根判定:$m>2$,$\varphi (m)$的不同素数是$q_1,q_2,……,q_s$,$(g,m)=1$,则$g$是$m$的一个原根的充要条件是$g^{\frac{\varphi(m)} ...

  9. React学习之State

    本文基于React v16.4.1 初学react,有理解不对的地方,欢迎批评指正^_^ 一.定义组件的两种方式 1.函数定义组件 function Welcome(props) { return & ...

  10. Fibonacci--poj3070(矩阵快速幂)

    http://poj.org/problem?id=3070 Description In the Fibonacci integer sequence, F0 = 0, F1 = 1, and Fn ...