代码定义菜单

一、选项菜单、子菜单

选项菜单通过点击界面右上角的图标调出,如果设为没有标题栏,就找不到菜单

1.显示

重写onCreateOptionsMenu函数,创建选项菜单

private void setIconEnable(Menu menu, boolean enable){
     try {
         Class<?> clazz = Class.forName("com.android.internal.view.menu.MenuBuilder");
         Method m = clazz.getDeclaredMethod("setOptionalIconsVisible", boolean.class);
         m.setAccessible(true);
         //MenuBuilder实现Menu接口,创建菜单时,传进来的menu其实就是MenuBuilder对象(java的多态特征)
         m.invoke(menu, enable);
     }catch (Exception e){

     }
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
    setIconEnable(menu,true);
    MenuItem item1 = menu.add(1,0,0,"a");
    item1.setIcon(android.R.drawable.ic_menu_icon);//设置选项前显示的图标
    MenuItem item2 = menu.add(1,1,0,"bb");

    SubMenu smenu1 = menu.addSubMenu(1,2,0,"sub");
    MenuItem item5 = smenu1.add(1,3,0,"sub1");
    MenuItem item6 = smenu1.add(1,4,0,"sub2");

    return super.onCreateOptionsMenu(menu);
}

add函数:

第二个参数itemId:选项id,用于判断

第四个参数title:选项显示的文字

第一个参数groupId、第三个参数order

 

2.事件

重写onOptionsItemSelected函数

@Override
public boolean onOptionsItemSelected(MenuItem item){
    switch (item.getItemId()){
        case 0:
            //执行操作
            break;
        case 1:
            //执行操作
            break;
    }
    return super.onOptionsItemSelected(item);
}

 

二、上下文菜单

1.显示

重写onCreateContextMenu函数

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
     super.onCreateContextMenu(menu, v, menuInfo);
     menu.add(1,11,0,"xx");
     menu.add(1,12,0,"xxx");
}

 

2.事件

onCreate函数中绑定控件(tv)

registerForContextMenu(tv);

重写onContextItemSelected函数

@Override
public boolean onContextItemSelected(MenuItem item) {
    switch (item.getItemId()){
        case 11:
            //执行操作
            break;
        case 12:
            //执行操作
            break;
    }
    return super.onContextItemSelected(item);
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值