android各种菜单使用介绍
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各种菜单使用介绍的更多相关文章
- Android滑动菜单框架完全解析,教你如何一分钟实现滑动菜单特效
		
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/8744400 之前我向大家介绍了史上最简单的滑动菜单的实现方式,相信大家都还记得.如 ...
 - Android四大基本组件介绍与生命周期
		
Android四大基本组件介绍与生命周期 Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器 ...
 - Android侧滑菜单代码实现
		
前两天学习了hyman老师讲的Android侧滑菜单的实现,经过自己的整理分享出来给大家学习一下 现在很多APP都有菜单侧滑的功能,本篇文章主要讲解使用自定义的HorizontalScrollView ...
 - Android Testing学习01 介绍 测试测什么 测试的类型
		
Android Testing学习01 介绍 测试测什么 测试的类型 Android 测试 测什么 1.Activity的生命周期事件 应该测试Activity的生命周期事件处理. 如果你的Activ ...
 - Xamarin Android教程Android基本知识版本介绍与系统介绍
		
Xamarin Android教程Android基本知识版本介绍与系统介绍 Xamarin Android教程Android基本知识版本介绍与系统介绍,开发Andriod有时候不像iOS一样轻松,因为 ...
 - Android系统架构说明介绍
		
Android系统架构说明介绍 Android系统架构和一些普遍的操作系统差不多,都是采用了分层的架构,从他们之间的架构图看,Android系统架构分为四个层,从高层到低层分别是应用程序层.应用程序框 ...
 - Android SQLite 数据库详细介绍
		
Android SQLite 数据库详细介绍 我们在编写数据库应用软件时,需要考虑这样的问题:因为我们开发的软件可能会安装在很多用户的手机上,如果应用使用到了SQLite数据库,我们必须在用户初次使用 ...
 - 【转】Android 4.2蓝牙介绍
		
原文网址:http://blog.csdn.net/innost/article/details/9187199 Tieto公司某蓝牙大牛写得<程序员>投稿文章 Android 4.2蓝牙 ...
 - Android MVP模式 简单易懂的介绍方式
		
主要学习这位大神的博客:简而易懂 Android MVP模式 简单易懂的介绍方式 https://segmentfault.com/a/1190000003927200
 
随机推荐
- 微信小程序wx.request请求服务器json数据并渲染到页面
			
[原文出自]: https://blog.csdn.net/weixin_39927850/article/details/79766259 微信小程序的数据总不能写死吧,肯定是要结合数据库来做数据更 ...
 - 360 Atlas中间件安装及使用
			
1.下载Atlas wget https://github.com/Qihoo360/Atlas/releases/download/2.2.1/Atlas-2.2.1.el6.x86_64.rpm ...
 - 华为S5700交换机初始化和配置SSH和TELNET远程登录方法
			
基础设置: 配置登陆IP地址<Quidway> system-view ...
 - cs229_part1
			
开篇题 这个系列的文章主要参考cs229课程的内容,按照自己的思路和其他课程与书籍方式梳理下来,可能顺序和内容都与cs229有点不一样,但是参考内容我都会附在最后.而且这个系列主要讲个人的理解不想太多 ...
 - Linux如何查看CPU负载
			
负载(load)是Linux机器的一个重要指标,直观了反应了机器当前的状态.如果机器负载过高,那么对机器的操作将难以进行. linux的负载高,主要是由于CPU使用.内存使用.IO消耗三部分构成.任意 ...
 - POJ-3468A Simple Problem with Integers,线段数区间更新查询,代码打了无数次还是会出错~~
			
A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Case Time L ...
 - Go 在游戏行业中的工程实践
			
在今年 1 月由七牛云主办的 ECUG Con 十周年盛会上,真有趣技术总监陈明达带来了题为< Go 在游戏行业中的工程实践>的精彩分享,深入讲解了 Go 的工程经验,错误和异常处理,in ...
 - android L版本AAL新架构
			
[DESCRIPTION] 和之前KK版本相比,在L版本上面AAL的架构也有发生一些改变. 拿掉了之前KK平台上使用的MTK LABC,使用Android原生的自动背光功能. AALService内部 ...
 - [转]Android SDK下载和更新失败的解决方法
			
今天更新sdk,遇到了更新下载失败问题: Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xmlFetched ...
 - Anagrams(hash表)
			
Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be ...