Android Menu菜单
一、Android提供了一些简单的方法来为应用添加Menu菜单。
提供了三种类型应用菜单:
1、Options Menu:通过Menu按钮调用菜单
2、Context Menu:通过长按屏幕,调用注册了的上下文菜单
3、Submenu:通过触摸Menu Item,调用子菜单选项
二、下面通过案例,来介绍如何定义Menu菜单、处理选项事件。
1、在/res/目录下新建menu文件夹,用于存储Menu XML资源文件
2、在/res/menu/下新建menu1.xml菜单界面描述文件
[html] <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu1" android:title="菜单1" />
<item android:id="@+id/menu2" android:title="菜单2" />
</menu>
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu1" android:title="菜单1" />
<item android:id="@+id/menu2" android:title="菜单2" />
</menu>
3、显示菜单,需重写Activity中onCreateOptionsMenu(Menu menu)方法
[java] @Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu1, menu);//调用第二步中定义的Menu界面描述文件
return true;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu1, menu);//调用第二步中定义的Menu界面描述文件
return true;
}onCreateOptionsMenu,当用户触击Menu按钮时,会调用这个方法。
4、设置“菜单1”、“菜单2”的选中事件
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Toast.makeText(this, String.valueOf(item.getItemId()), Toast.LENGTH_LONG).show();
return super.onOptionsItemSelected(item);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Toast.makeText(this, String.valueOf(item.getItemId()), Toast.LENGTH_LONG).show();
return super.onOptionsItemSelected(item);
}这里将每次选中的选项ID显示在屏幕上。
5、重写Activity中onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo)
[java] @Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu1, menu);
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu1, menu);
super.onCreateContextMenu(menu, v, menuInfo);
}
之后当用户长按屏幕时,将会显示菜单项。
6、设置上下文菜单选项的选中事件
[java] @Override
public boolean onContextItemSelected(MenuItem item){
Toast.makeText(this, String.valueOf(item.getItemId()), Toast.LENGTH_LONG).show();
return super.onContextItemSelected(item);
}
@Override
public boolean onContextItemSelected(MenuItem item){
Toast.makeText(this, String.valueOf(item.getItemId()), Toast.LENGTH_LONG).show();
return super.onContextItemSelected(item);
}这里仅显示选中选项的ID
效果截图:
三、创建子菜单、单选子菜单、多选子菜单
1、子菜单
在<item/>标签内嵌套<menu/>
[html] <menu
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/submenu"
android:title="菜单项1">
<menu>
<item android:id="@+id/submenu_item1"
android:title="子菜单项1" />
</menu>
</item>
</menu>
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/submenu"
android:title="菜单项1">
<menu>
<item android:id="@+id/submenu_item1"
android:title="子菜单项1" />
</menu>
</item>
</menu>
2、单选子菜单、多选子菜单
使用group标签,设置属性android:checkableBehavior其中的三个值:single、all、none
single设置为单选,all为多选,none为普通选项
更多的属性说明可以阅读文档:http://android.toolib.net/guide/topics/resources/menu-resource.html
多选示例:
[html] <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/csubmenu3" android:title="多选菜单">
<menu>
<group android:checkableBehavior="all">
<item android:title="子菜单1"/>
<item android:title="子菜单2"/>
<item android:title="子菜单3"/>
</group>
</menu>
</item>
</menu>
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://sche
补充:移动开发 , Android ,