创建选项菜单并设置菜单项(重写):onCreateOptionsMenu()
1.设置菜单项可用代码动态设置 menuadd()
2.还可以通过xml设置getMenuInflateri().infalte();
设置菜单项点击事件:onOptionsItemSelected()
一、通过xml添加
orderInCategory:排序的序号
showAsAction:默认是否显示 never:默认不显示
title:标题
menu main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/>
<item
android:id="@+id/action_add"
android:orderInCategory="101"
android:showAsAction="never"
android:title="@string/action_settings"/>
</menu><pre name="code" class="java">//创建菜单
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
//监听菜单项点击事件
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//item 当前点击项
//通过菜单项id(getItemId)判断
switch (item.getItemId()) {
case R.id.action_settings:
Toast.makeText(MainActivity.this, "点击了菜单1", Toast.LENGTH_LONG).show();
break;
case R.id.action_add:
Toast.makeText(MainActivity.this, "点击了菜单2", Toast.LENGTH_LONG).show();
break;
}
return super.onOptionsItemSelected(item);
}
二、动态添加菜单项
//创建菜单
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//分组id,项id,排序,名称
MenuItem item=menu.add(1,100,1,"菜单1");
//重新设置标题
item.setTitle("aaa");
//图标不一定显示 api>=11 不显示图标
item.setIcon(R.drawable.ic_launcher);
menu.add(1,101,2,"菜单2");
menu.add(1,102,3,"菜单3");
menu.add(1,103,4,"菜单4");
menu.add(1,104,5,"菜单5");
menu.add(1,105,6,"菜单6");
return true;
}
//监听菜单项点击事件
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//item 当前点击项
//通过菜单项id(getItemId)判断
switch (item.getItemId()) {
case 100:
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
//点击后的意图
item.setIntent(intent);
break;
case 101:
Toast.makeText(MainActivity.this, "点击了菜单2", Toast.LENGTH_LONG).show();
break;
case 102:
Toast.makeText(MainActivity.this, "点击了菜单2", Toast.LENGTH_LONG).show();
break;
}
return super.onOptionsItemSelected(item);
}
??点击后调转至页面
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
//点击后的意图
item.setIntent(intent);
//分组id,项id,排序,名称
MenuItem item=menu.add(1,100,1,"菜单1");
//重新设置标题
item.setTitle("aaa");
//图标不一定显示 api>=11 不显示图标
item.setIcon(R.drawable.ic_launcher);
SubMenu菜单
使用代码添加
//创建菜单SubMenu
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// 分组id,项id,排序,名称
// 创建子菜单
SubMenu flie = menu.addSubMenu("文件");
SubMenu edit = menu.addSubMenu("编辑");
// 为子菜单添加菜单项
flie.add(1, 1, 1, "打开");
flie.add(1, 2, 1, "新建");
flie.add(1, 3, 1, "保存");
flie.setHeaderTitle("文件操作");
flie.setHeaderIcon(R.drawable.ic_launcher);
edit.add(2, 1, 1, "复制");
edit.add(2, 2, 1, "粘贴");
edit.add(2, 3, 1, "删除");
edit.setHeaderTitle("编辑操作");
edit.setHeaderIcon(R.drawable.ic_launcher);
return true;
}
// 监听菜单项点击事件
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// item 当前点击项
// 通过菜单项id(getItemId)判断
if (item.getGroupId() == 1) {
switch (item.getItemId()) {
case 1:
Toast.makeText(MainActivity.this, "点击了打开", Toast.LENGTH_LONG)
.show();
break;
case 2:
Toast.makeText(MainActivity.this, "点击了新建", Toast.LENGTH_LONG)
.show();
break;
case 3:
Toast.makeText(MainActivity.this, "点击了保存", Toast.LENGTH_LONG)
.show();
break;
}
} else if (item.getGroupId() == 2) {
switch (item.getItemId()) {
case 1:
Toast.makeText(MainActivity.this, "点击了菜单2", Toast.LENGTH_LONG)
.show();
break;
case 2:
Toast.makeText(MainActivity.this, "点击了菜单2", Toast.LENGTH_LONG)
.show();
break;
case 3:
Toast.makeText(MainActivity.this, "点击了菜单2", Toast.LENGTH_LONG)
.show();
break;
}
}
return super.onOptionsItemSelected(item);
}
2.通过xml文件
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:showAsAction="never"
android:title="文件">
<menu>
<item android:id="@+id/newfile"/>
<item android:id="@+id/newopen"/>
<item android:id="@+id/newdel"/>
</menu>
</item>
<item
android:showAsAction="never"
android:title="编辑">
<menu>
<item android:id="@+id/editfile"/>
<item android:id="@+id/editopen"/>
<item android:id="@+id/editdel"/>
</menu>
</item>
</menu>
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater=getMenuInflater();
inflater.inflate(R.menu.main, menu);
return true;
}