Menu创建的方式:
1、通过xml定义
2、通过java定义
3、效果
【方式1更好】
xml定义menu的优势:
1、清晰的菜单结构
2、将菜单内容与应用的逻辑代码分离
3、资源适配更容易
【以下以OptionMenu为例】
一、通过xml资源来设计menu
1、xml文件
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:title="保存"
android:id="@+id/save"
android:icon="@mipmap/ic_launcher"
app:showAsAction="always"/>
<item android:title="设置"
android:id="@+id/setting"/>
<item android:title="更多操作" >
<menu >
<item android:title="退出"
android:id="@+id/exit"/>
<item android:title="子菜单2" />
<item android:title="子菜单3" />
</menu>
</item>
</menu>
2、相应的java代码
//创建OptionsMenu
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//将菜单资源加载到当前的菜单中
//1、通过xml资源来设计menu
getMenuInflater().inflate(R.menu.option,menu);
return true;
}
//OptionsMenu菜单项的选中方法
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
//配合xml方式设计menu
case R.id.save:
Toast.makeText(this,"保存",Toast.LENGTH_SHORT).show();
break;
case R.id.setting:
Toast.makeText(this,"设置",Toast.LENGTH_SHORT).show();
break;
case R.id.exit:
finish();
break;
}
return super.onOptionsItemSelected(item);
}
二、纯java代码设计menu
//创建OptionsMenu
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//2、纯java代码设计menu
/*
设置
更多
添加
删除
*/
// Menu
//参数1:组id 参数2:菜单项id 参数3:序号 参数4:设置
menu.add(1,1,1,"设置");
SubMenu sub=menu.addSubMenu(1,2,2,"更多");
// SubMenu 子菜单
sub.add(2,3,1,"添加");
sub.add(2,4,2,"删除");
return true;
}
//OptionsMenu菜单项的选中方法
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case 1:
Toast.makeText(this,"设置",Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(this,"更多",Toast.LENGTH_SHORT).show();
break;
case 3:
Toast.makeText(this,"添加",Toast.LENGTH_SHORT).show();
break;
case 4:
Toast.makeText(this,"删除",Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
三、效果