android子视图无菜单,Android 菜单详解

Android中菜单分为三种,选项菜单(OptionMenu),上下文菜单(ContextMenu),子菜单(SubMenu)

选项菜单

可以通过两种办法增加选项菜单,一是在menu.xml中添加,该种方式参见Android 资源详解(二) 菜单资源,二是在.java中添加

1、覆盖Activity 的 onCreateOptionsMenu(Menu  menu)方法,当我们第一次打开菜单

时该方法被自动调用。

2、调用Menu的 add()方法添加菜单项(Menultem) ,可以调用Menultem的setIcon()

方法来为菜单项设置图标。.1

3、当菜单项(Menuitem)    被选择时,覆盖 Activity   的 onOptionsItemSelected()方法来 响应事件。

如下代码:public class MainActivity extends Activity {

private static final int menu1=Menu.FIRST;

private static final int menu2=Menu.FIRST+1;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

public boolean onCreateOptionsMenu(Menu menu) {

menu.add(0,menu1,0,"OK");

menu.add(0,menu2,0,"CANCEL");

return true;

}

}

上下文菜单

当用户按住屏幕后,弹出的菜单成为上下文菜单。

1、覆盖Activity  的 onCreateContextMenuO方法, 调用 Menu 的 add 方法添加菜单项

2、覆盖onContextItemSelected(MenuIten item) 方法,响应菜单单击事件。

3、调用 registerForContextMenu()方法,为视图注册上下文菜单。当长按视图时,会出现上下文菜单。代码如下:public class MainActivity extends Activity {

private static final int menu1=Menu.FIRST;

private static final int menu2=Menu.FIRST+1;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

TextView mytext=(TextView)this.findViewById(R.id.text1);

this.registerForContextMenu(mytext);

}

public void onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo menuinfo) {

menu.add(0,menu1,0,"OK");

menu.add(0,menu2,0,"CANCEL");

}

public boolean onContextItemSelected(MenuItem item) {

int id=item.getGroupId();

switch(id) {

case menu1: break;

case menu2:break;

}

return super.onContextItemSelected(item);

}

子菜单

子菜单就是将相同功能的分组进行多级显示的一种菜单,比如,Windows的"文件"菜单中又有"新建"、"打开"、"关闭"等子菜单。Android系统中的子菜单也很多见,如" Settings"  (设置)菜单就有其子菜单。

具体步骤如下:

1、覆盖Activity 的 onCreateOptionsMenu()方法,调用 Menu 的 addSubMenu()方法添

加子菜单项 (SubMenu)。

2、调用SubMenu的add()方法,添加子菜单 (SubMenu) 。

3、覆盖onContextItemSelected()方法,响应菜单单击事件。

代码如下:public class MainActivity extends Activity {

private static final int menu1=Menu.FIRST;

private static final int menu2=Menu.FIRST+1;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

public boolean onCreateOptionsMenu(Menu menu) {

SubMenu file=menu.addSubMenu("file");//添加子菜单

SubMenu edit=menu.addSubMenu("edit");//添加子菜单

file.add(0,menu1,0,"new");//为子菜单添加菜单选项

file.add(0,menu2,0,"open");

return true;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值