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; } @Overridepublic 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);} @Overridepublic 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/

更多相关文章

  1. ExpandableListView用法实例
  2. 笔记77-listview属性介绍
  3. Android(安卓)登录界面调用输入法时让界面自动上移,使输入法不会
  4. Android实现底部弹出按钮菜单升级版
  5. Android中圆形和条形ProgressBar设置颜色
  6. android的Menu使用(1)------选项菜单
  7. Android(安卓)Java和JavaScript代码相互调用
  8. android 模拟器中启用相机API支持
  9. Android(安卓)Studio SVN 使用方法

随机推荐

  1. SQL Server误区30日谈 第13天 在SQL Serv
  2. SQL Server误区30日谈 第12天 TempDB的文
  3. SQL Server误区30日谈 第11天 镜像在检测
  4. SQL Server误区30日谈 第10天 数据库镜像
  5. SQL Server误区30日谈 第9天 数据库文件
  6. SQL Server误区30日谈 第8天 有关对索引
  7. SQL Server误区30日谈 第7天 一个实例多
  8. SQL Server误区30日谈 第6天 有关NULL位
  9. SQL Server误区30日谈 第5天 AWE在64位SQ
  10. 浅谈SQL Server 对于内存的管理[图文]