Android 备忘录 -- Menu

来源:互联网 发布:dnf台服数据库爆率修改 编辑:程序博客网 时间:2024/06/15 23:40

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.在活动文件中重写相应的方法

包括两个方法:onCreateOptionsMenuonOptionsItemSelected

    其中 onCreateOptionsMenu 用来绑定menu文件

    onOptionsItemSelected 用来自定义响应操作,即各个菜单项点击后的具体执行动作

    代码如下    

@Overridepublic boolean onCreateOptionsMenu(Menu menu){//第一个参数指定要使用的xml资源文件,第二个参数指定我们创建的菜单项添加到哪一个Menu对象里getMenuInflater().inflate(R.menu.main, menu);return super.onCreateOptionsMenu(menu);//return true;—— 允许创建的菜单显示出来//return false;—— 不允许创建的菜单显示}

@Overridepublic 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/


0 0