zoukankan      html  css  js  c++  java
  • 安卓长按交互onCreateContextMenu的简单 用法

    1.可在activity和fragment中使用。

    2.使用方法

    (1)注册

    registerForContextMenu(btn);//btn是要实现交互的控件

    (2)重写onCreateContextMenu方法和onContextItemSelected方法(有两种方式先讲第一种)

    @Override
    
        public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    
            super.onCreateContextMenu(menu, v, menuInfo);
    
            getMenuInflater().inflate(R.menu.menu,menu);
    
            //给menu设置布局文件,当触发时显示在界面上
        }
    @Override
    
        public boolean onContextItemSelected(MenuItem item) {
    
            //布局文件里面对应的id,当点击时,根据id区别那个被点击
    
            switch(item.getItemId()){
    
                caseR.id.text1:
    
                    Log.i("leilei","text1");
    
                    break;
    
                caseR.id.text2:
    
                    Log.i("leilei","text2");
    
                    break;
    
                caseR.id.text3:
    
                    Log.i("leilei","text3");
    
                    break;
            }
            returnsuper.onOptionsItemSelected(item);
        }

    (3)触发条件(1 调用方法 view.showContextMenu(),2 长按(可以和长按事件setOnLongClickListener同时触发)。

    //调用方法方式
    
    btn.setOnClickListener(newView.OnClickListener() {
    
                @Override
    
                public void onClick(View v) {
    
                    v.showContextMenu();//单击直接显示Context菜单
    
                }
    
            });

    在讲讲第二种方式(ContextMenu 方法)

    @Override
        public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
            // TODOAuto-generated method stub
            menu.setHeaderIcon(R.drawable.tp_3);
            menu.setHeaderTitle(R.string.menuHeader01);
            menu.add(20, 20, 20, R.string.conTextMenu01);
            menu.add(20, 21, 21, R.string.conTextMenu02);
            super.onCreateContextMenu(menu, v, menuInfo);
        }
    
     @Override
        public boolean onContextItemSelected(MenuItem item){
            String str = "";
            switch(item.getItemId()){
            case 20:
                str = "20";
                break;
            case 21:
                str = "21";
                break;
            }
            Toast.makeText(getApplicationContext(),str, Toast.LENGTH_LONG).show();
            return true;
        }

    这种是用原生的进行菜单填充

     menu.add(20, 20, 20, R.string.conTextMenu01);

     参数1:小组的标记;

    参数2:给他设置一个ID ;

    参数3:怎么显示位置(0,1);

    参数4:文字的显示
     (4)总结

    1.registerForContextMenu方法:用于为一个View对象注册上下文菜单,其输入为View对象

    2.onCreateContextMenu方法:初始化上下文菜单,在需要相应上下文菜单时调用

    3.onContextItemSelected方法:设置上下文中某个菜单被选中时的操作

    4.onContextMenuClosed方法:用于设置当前上下文菜单被关闭时的操作,其输入为menu对象

    by:leileitua

  • 相关阅读:
    学习流程
    Linux计划任务 定时任务 Crond 配置详解 crond计划任务调试 sh x 详解 JAVA脚本环境变量定义
    asp.net 将Excel中某个工作簿的数据导入到DataTable方法
    在浏览器输入url,发生了什么?BSC结构图(百度搜索关键字发生了什么?)
    在C#中使用属性控件添加属性窗口
    转载:面向对象在数据库应用程序中的应用(dotNet)
    中国软件:10个人20年坎坷路
    客户端回调
    鼠标放在图片连接上面,预览图片
    一个合格的程序员该做的事情
  • 原文地址:https://www.cnblogs.com/widgetbox/p/10782172.html
Copyright © 2011-2022 走看看