Author:ProZoom
Hobby:爱折腾、爱思考,想静静的ProZoom
Github --- 简书 --- CSDN --- 关于我
Menu篇
Android系统自带的Menu很单一,但是它也支持自定义,接下来我们就来总结下Menu的用法
Menu样式的定义
Android的Menu样式一般定义在res/menu/文件目录下,其中有一个根元素< menu >,他们只有两个子标签:
< group >
< item >
分别用于设置菜单项和分组
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group >
<item>
......
</item>
<item>
......
</item>
</group>
<item >
</item>
</menu>
接下来各自介绍每个标签的属性和相应的值
group属性
用于设置分组
- android:checkableBehavior 表示菜单项是否带复选框。该属性可设计为true或false
- android:enabled 菜单项默认状态是否被激活,该属性可设计为true或false
- android:id group的id号
- android:menuCategory 同种菜单项的种类,该属性可取4个值:Container、system、secondary和alternative。通过menuCategroy属性可以控制菜单项的位置。例如将属性设为system,表示该菜单项是系统菜单,应放在其他种类菜单项的后面
- android:orderInCategory 同种类菜单的排列顺序。该属性需要设置一个整数值,每个item的优先级,值越大优先级越低,actionbar地方不够就会放到overflow中
- android:visible 菜单项默认状态是否可视,该属性可设计为true或false
item属性
用于设置菜单项
- android:visible 与<item>标签的同名属性含义相同。只是作用域为菜单组
- android:orderInCategory 与<item>标签的同名属性含义相同。只是作用域为菜单组
- android:menuCategory 与<item>标签的同名属性含义相同。只是作用域为菜单组
- android:id 表示菜单组的ID
- android:enabled 与<item>标签的同名属性含义相同。只是作用域为菜单组
- android:actionLayout
- android:actionProviderClass
- android:actionViewClass
- android:alphabeticModifiers
- android:alphabeticShortcut
- android:checkable 表示菜单项是否带复选框。该属性可设计为true或false
- android:checked 如果菜单项带复选框(checkable属性为true),该属性表示复选框默认状态是否被选中。可设置的值为true或false
- android:contentDescription
- android:icon
- android:iconTint
- android:iconTintMode
- android:numericModifiers
- android:numericShortcut
- android:onClick
- android:title
- android:titleCondensed
- android:tooltipText
- app:showAsAction
Menu编程
Menu菜单重写
重写菜单需要重载以下一个方法:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//方法一:代码构建,不需要xml
menu.add(Menu.NONE, Menu.NONE, 1, "菜单1");
menu.add(Menu.NONE, Menu.NONE, 2, "菜单2");
//方法二:
getMenuInflater().inflate(R.menu.menu文件, menu);
return super.onCreateOptionsMenu(menu);
}
menu菜单响应
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()){
case ......
}
return super.onOptionsItemSelected(item);
}