android 长按事件处理方法

android 长按菜单(上下文菜单)和选项菜单

android 长按菜单(上下文菜单)和选项菜单(程序级系统菜单)

// 演示两种菜单的实现方式:上下文菜单(通过在某元素上长按,来呼出菜单)和选项菜单(通过按手机上的菜单按钮,来呼出菜单)  

public class Main extends Activity {   

    public void onCreate(Bundle savedInstanceState) {   

        super.onCreate(savedInstanceState);   

        setContentView(R.layout.main);   

        // 为 R.id.txt1 注册一个上下文菜单(在此 TextView 上长按,则会呼出上下文菜单)  

        // 具体呼出的菜单内容需要重写 onCreateContextMenu 来创建  

        TextView txt1 = (TextView) this.findViewById(R.id.txt1);   

        this.registerForContextMenu(txt1);   

         // 为 R.id.txt2 注册一个上下文菜单  

        TextView txt2 = (TextView) this.findViewById(R.id.txt2);   

        this.registerForContextMenu(txt2);   

    }  

    // 重写 onCreateContextMenu 用以创建上下文菜单  

    // 重写 onContextItemSelected 用以响应上下文菜单  

    @Override  

    public void onCreateContextMenu(ContextMenu menu, View v,   

            ContextMenuInfo menuInfo) {   

        super.onCreateContextMenu(menu, v, menuInfo);   

        // 创建 R.id.txt1 的上下文菜单  

        if (v == (TextView) this.findViewById(R.id.txt1)) {   

            // ContextMenu.setIcon() - 设置菜单的图标  

            // ContextMenu.setHeaderTitle() - 设置菜单的标题  

            menu.setHeaderIcon(R.drawable.icon01);   

            menu.setHeaderTitle("我是菜单");   

            // 用 ContextMenu.add() 来增加菜单项,返回值为 MenuItem  

            // 第一个参数:组ID  

            // 第二个参数:菜单项ID  

            // 第三个参数:顺序号  

            // 第四个参数:菜单项上显示的内容  

            menu.add(1, 0, 0, "菜单1");   

            // MenuItem - 新增菜单项后的返回类型,针对菜单项的其他设置在此对象上操作   

            menu.add(1, 1, 1, "菜单2").setCheckable(true);   

        }   

        // 创建 R.id.txt2 的上下文菜单(多级上下文菜单)  

        else if (v == (TextView) this.findViewById(R.id.txt2)) {   

            // ContextMenu.addSubMenu("菜单名称") - 用来添加子菜单。子菜单其实就是一个特殊的菜单  

            SubMenu sub = menu.addSubMenu("父菜单1");   

            sub.setIcon(R.drawable.icon01);   

            sub.add(0, 0, 0, "菜单1");   

            sub.add(0, 1, 1, "菜单2");   

            sub.setGroupCheckable(1, true, true);   

            SubMenu sub2 = menu.addSubMenu("父菜单2");   

            sub2.setIcon(R.drawable.icon01);   

            sub2.add(1, 0, 0, "菜单3");   

            sub2.add(1, 1, 1, "菜单4");   

            sub2.setGroupCheckable(1, true, false);       

        }   

    }        

    // 重写 onCreateOptionsMenu 用以创建选项菜单  

    @Override  

    public boolean onCreateOptionsMenu(Menu menu) {

        MenuItem menuItem = menu.add(0, 0, 0, "菜单111111111111111111111");   

        // MenuItem.setIcon() - 设置菜单项的图标  

        // MenuItem.setTitleCondensed() - 菜单的简标题,如果指定了简标题的话,菜单项上的标题将会以此简标题为准  

        // MenuItem.setAlphabeticShortcut() - 设置选中此菜单项的快捷键  

        // 注:菜单项超过 6 个的话,第 6 个菜单将会变为  More 菜单,多余的菜单会在单击 More 菜单之后显示出来  

        menuItem.setIcon(R.drawable.icon01);   

        menuItem.setTitleCondensed("菜单1");   

        menuItem.setAlphabeticShortcut(''a'');   

        menu.add(0, 1, 1, "菜单2").setIcon(R.drawable.icon02);   

        menu.add(0, 3, 3, "菜单4");   

        menu.add(0, 7, 7, "菜单8").setIcon(R.drawable.icon05);   

        return true;   

    }   

  

    // 重写 onOptionsItemSelected 用以响应选项菜单  

    @Override  

    public boolean onOptionsItemSelected(MenuItem item) {   

        super.onOptionsItemSelected(item);   

        Toast.makeText(Main.this, "被单击的菜单项为:" + String.valueOf(item.getItemId()), Toast.LENGTH_SHORT).show();   

        return false;   

    }  

    /**
     * 点击长按菜单出现的效果
     */
        @Override  
        public booleanonContextItemSelected(MenuItem item) {  
            setTitle("点击了长按菜单里面的第"+item.getItemId()+"个项目");   
            returnsuper.onContextItemSelected(item);  
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值