zoukankan      html  css  js  c++  java
  • android中的菜单Menu

    Menu是一个接口, 他有2个子接口, SubMenu和ContextMenu; 前者菜单常见于按home键就会出现 ,后者是一个上下文菜单, 一般点击某个条目会在手机屏幕中出现一个类似悬浮窗口的菜单

    1.SubMenu的实现

    总体来说它主要有2个方法--add()和addSubMenu()前者是往子菜单中添加菜单项; 后者是添加一个新的子菜单

    案例:

    public class MainActivity extends Activity {
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // 向Menu中添加一个子菜单
            SubMenu subMenu1 = menu.addSubMenu(0, 1, 0, "添加");
            SubMenu subMenu2 = menu.addSubMenu(0, 2, 0, "修改");
            SubMenu subMenu3 = menu.addSubMenu(0, 3, 0, "查询");
            SubMenu subMenu4 = menu.addSubMenu(0, 4, 0, "删除");
    
            // 给子菜单添加菜单项
            subMenu1.add(0, 1, 0, "菜单项11");
            subMenu1.add(0, 1, 0, "菜单项12");
            subMenu1.add(0, 1, 0, "菜单项13");
    
            subMenu2.add(0, 2, 0, "菜单项21");
            subMenu2.add(0, 2, 0, "菜单项22");
    
            subMenu3.add(0, 3, 0, "菜单项33");
    
            return super.onCreateOptionsMenu(menu);
        }
    
        @Override
        public boolean onOptionsItemSelected(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.onOptionsItemSelected(item);
        }
    
    }

    对于add(int groupId,int itemId,int order, int titleRes);参数解释

    groupid表示某个菜单项组,也就是这个菜单项位于哪个组中,itemId用于在回调函数标示一个菜单项,order显示顺序,title是一个标题; 对于addSubMenu()参数和这个类似

    2.上下文菜单Contextmenu

    public class MainActivity2 extends Activity {
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main2);
    
            String[] names = new String[] { "zhangsan", "lisi", "wangwu", "zhaoliu" };
    
            ListView lv = (ListView) findViewById(R.id.lv);
    
            lv.setAdapter(new ArrayAdapter<String>(this,
                    android.R.layout.simple_expandable_list_item_1,
                    names));
            
            //步骤1给listview注册上下午菜单
            registerForContextMenu(lv);
        }
    
        // 步骤2重写onCreateContextMenu创建上下文菜单
        @Override
        public void onCreateContextMenu(ContextMenu menu, View v,
                ContextMenuInfo menuInfo) {
            super.onCreateContextMenu(menu, v, menuInfo);
            MenuInflater inflater = getMenuInflater();
            inflater.inflate(R.menu.context_menu, menu);
        }
    
        // 步骤3在res/menu/创建context_menu.xml
    
        // 步骤4重写onContextItemSelected执行点击事件
        @Override
        public boolean onContextItemSelected(MenuItem item) {
            AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
                    .getMenuInfo();
            switch (item.getItemId()) {
            default:
                return super.onContextItemSelected(item);
            }
        }
    
    }

    主布局文件很简单,就一个Listview,不在给出
    context_menu.xml文件

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android" >
        
        <item android:id="@+id/update_name" android:title="更改姓名"/>
        <item android:id="@+id/update_delete" android:title="删除姓名"/>
    </menu>

    当长点击listview的一个条目时的效果图

  • 相关阅读:
    C学习笔记-typedef
    C学习笔记-typedef
    C语言之联合体
    C语言之联合体
    Browsersync 省时浏览器同步测试工具,浏览器自动刷新,多终端同步
    Gulp学习指南之CSS合并、压缩与MD5命名及路径替换
    es6 添加事件监听
    珠峰
    js添加触摸时间,禁止页面缩放
    百度地图叠加扇形区域,也可以做成异性区域
  • 原文地址:https://www.cnblogs.com/android-zcq/p/3141589.html
Copyright © 2011-2022 走看看