1.创建文件
在res目录下创建一个menu文件夹,再在里面创建一个Android XML File,命名为 main
2.给菜单文件添加内容
在打开的main.xml文件里可添加两个标签用于设置菜单项和分组,这两个标签是<item>和<group>。
item按钮也就是具体的菜单项。
代码如下
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/id_action_add"
app:showAsAction="always"
android:title="add"
android:icon="@mipmap/ic_launcher"
android:orderInCategory="1"
/>
</menu>
子项细节说明:
1.<item>标签的属性含义如下:
android:id="@+id/id_action_add" —— 用来给菜单项指定ID
android:title="add" —— 用来指定菜单项显示的文字
android:icon="@mipmap/ic_launcher" —— 用来自定义菜单项显示的图片
app:showAsAction="always" —— 用来指定菜单项的显示与否,有三个可选项:
always:总是显示在界面上
never:不显示在界面上,只出现在右边的三个点中
ifRoom:如果有位置才显示,不然就出现在右边的三个点中
android:orderInCategory="1" —— 用来设置优先级,值越大优先级越低
titleCondensed —— 菜单项的短标题。当菜单项标题太长时会显示该属性值
menuCategory —— 同种菜单项的种类。该属性可取4个值:Container、system、secondary和alternative。通过menuCategroy属性可以控制菜单项的位置。例如将属性设为system,表示该菜单项是系统菜单,应放在其他种类菜单项的后面。
-------------------------分割线,以下属性不常用-----------------------
alphabeticShortcut —— 菜单项的字母快捷键
numericShortcut —— 菜单项的数字快捷键
checkable —— 表示菜单项是否带复选框。该属性可设计为true或false
checked —— 如果菜单项带复选框(checkable属性为true),该属性表示复选框默认状态是否被选中。可设置的值为true或false
visible —— 菜单项默认状态是否可视
enable —— 菜单项默认状态是否被激活
2.<group>标签的属性含义如下:
android:id="@+id/id_action_add" ——用来给菜单项指定ID
android:orderInCategory="1" —— 与<item>标签的同名属性含义相同。只是作用域为菜单组
checkableBehavior —— 设置该组所有菜单项上显示的选择组件(CheckBox或Radio Button)。如果将该属性值设为all,显示CheckBox组件;如果设为single,显示Radio Button组件;如果设为none,显示正常的菜单项(不显示任何选择组件)。
要注意的是,Android SDK官方文档在解释该属性时有一个笔误,原文是:
Whether the items are checkable. Valid values: none, all(exclusive/radiobuttons), single(non-exclusive/checkboxes).
相反了,正确应该是
menuCategory —— 与<item>标签的同名属性含义相同。只是作用域为菜单组
all(non-exclusive/checkboxes),single(exclusive/radiobuttons).
-------------------------分割线,以下属性不常用-----------------------
visible —— 表示当前组中所有菜单项是否显示。该属性可设置的值是true或false
enable —— 表示当前组中所有菜单项是否被激活。该属性可设置的值是true或false
3.在活动文件中重写相应的方法
包括两个方法:onCreateOptionsMenu和onOptionsItemSelected
其中 onCreateOptionsMenu 用来绑定menu文件
onOptionsItemSelected 用来自定义响应操作,即各个菜单项点击后的具体执行动作
代码如下
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
//第一个参数指定要使用的xml资源文件,第二个参数指定我们创建的菜单项添加到哪一个Menu对象里
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
//return true; —— 允许创建的菜单显示出来
//return false; —— 不允许创建的菜单显示
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
//根据ID判断点击的是哪一个菜单项,再做出响应操作
switch (item.getItemId())
{
case R.id. id_action_add:
//事件——响应操作
break;
}
return true; //常用项,表示处理完菜单项的事件,不需要将该事件继续传播,
//return super.onOptionsItemSelected(item); —— 对没有处理的事件,交给父类来处理
}
参考:
第一行代码(书籍)
http://blog.csdn.net/yuzhongchun/article/details/8956256/