MenuProject 菜单

1、选项菜单 OptionsMenu

方法一、在程序生成菜单,需要调用4种可用的方法

1、public boolean onCreateOptionsMenu(Menu menu) {
menu.add(Menu.NONE, Menu.FIRST + 1, 1, "删除").setIcon(
android.R.drawable.ic_menu_delete);
return true;
}
    2、@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){ //判断操作的itemId
case Menu.FIRST+1:
Toast.makeText(this, "删除", Toast.LENGTH_SHORT).show();
break;
            }
      return false;}
  3、public void onOptionsMenuClosed(Menu menu) {
Toast.makeText(this, "选项菜单关闭了", Toast.LENGTH_LONG).show();

}
 4、public boolean onPrepareOptionsMenu(Menu menu) {
Toast.makeText(this,
"在菜单显示(onCreateOptionMenu()方法之前合调用此操作,可以在此操作之中完成一些预处理功能。)",
Toast.LENGTH_LONG).show();
return true;
}

方法二、通过配置文件生成 、通过MenuInflater类转换

在menu文件夹下创建一个mymenu.xml配置文件 
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/item01"
        android:title="添加"
        android:icon="@android:drawable/ic_menu_add"/>
</menu>
在程序中通过创建菜单时将配置文件转换成菜单
public boolean onCreateOptionsMenu(Menu menu) {
super.getMenuInflater().inflate(R.menu.mymenu, menu);
return true;
}

2、上下文菜单(ContextMenu)

方法与上面类似,都有两种方法实现。
1、onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo)
2、onContextItemSelected(MenuItem item) 
3、onContextMenuClosed(Menu menu)

此上下文菜单可以用在listView上,不过需要注册才能将上下文菜单应用在listView列表上

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.listView = new ListView(this);
this.listView.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_expandable_list_item_1, this.data));
super.setContentView(this.listView);
super.registerForContextMenu(listView);
}

3、子菜单(SubMenu)

子菜单用的方法与选项菜单一样
@Override
public boolean onCreateOptionsMenu(Menu menu) {
SubMenu fileMenu=menu.addSubMenu("文件");
SubMenu editMenu=menu.addSubMenu("编辑");
fileMenu.add(Menu.NONE, Menu.FIRST +1, 1, "新建");
fileMenu.add(Menu.NONE, Menu.FIRST +2, 2, "打开");
fileMenu.add(Menu.NONE, Menu.FIRST +3, 3, "保存");
editMenu.add(Menu.NONE, Menu.FIRST +4, 4, "撤销");
editMenu.add(Menu.NONE, Menu.FIRST +5, 5, "恢复");
return super.onCreateOptionsMenu(menu);
}
第二种方法需要创建两个菜单xml文件
filemenu和editmenu
然后在程序中super.getMenuInflater().inflate(R.menu.filemenu, filemenu);
                        super.getMenuInflater().inflate(R.menu.editmenu, editmenu);
将菜单文件转到布局中 即可
可惜不能在布局文件单定义父子菜单的关系、、、
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值