美文网首页开发技巧Android
Android样式基础--Menu篇

Android样式基础--Menu篇

作者: ProZoom | 来源:发表于2017-08-14 16:32 被阅读85次

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);
}

相关文章

网友评论

    本文标题:Android样式基础--Menu篇

    本文链接:https://www.haomeiwen.com/subject/qxwurxtx.html