博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android各种菜单使用介绍
阅读量:5075 次
发布时间:2019-06-12

本文共 5632 字,大约阅读时间需要 18 分钟。

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的实现如下:

 

第二: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
adapter = new ArrayAdapter
(this, android.R.layout.simple_list_item_1, getData()); listView.setAdapter(adapter); this.registerForContextMenu(listView);//设置菜单选项 }    //为列表设置数据 private ArrayList
getData(){ ArrayList
list = new ArrayList
(); 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);    }}

 

作者:

微博:

github:

出处:

 

转载于:https://www.cnblogs.com/fengtengfei/p/4009926.html

你可能感兴趣的文章
python进程相关 - 多线程threading库
查看>>
【iOS-Cocos2d游戏开发】系列(总结了多篇文章,可以好好学习
查看>>
JavaBean
查看>>
根据慕课网webpack学习。
查看>>
http://search.maven.org/(maven组件找寻)
查看>>
Python 3 教程
查看>>
es5 - array - concat
查看>>
Insmod模块加载过程分析
查看>>
Linux进程间通信--信号
查看>>
Nginx 笔记与总结(16)nginx 负载均衡
查看>>
(转)Python数学函数
查看>>
(转)SQLAlchemy入门和进阶
查看>>
无分类编址 CIDR (构成超网)
查看>>
2017.11.21T19_6讲义
查看>>
20189217 2018-2019-2 《移动平台开发实践》课程总结
查看>>
sqlserver数据库使用技巧(一)--限制数据库的大小
查看>>
css中的各种单位
查看>>
Installation for TinyOS on Ubuntu 16.04
查看>>
数据库阿里连接池 druid配置详解
查看>>
line-height:150%和line-height:1.5的区别
查看>>