灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:1900回复:0

Android应用资源---菜单资源类型(Menu)

楼主#
更多 发布于:2012-09-06 13:55


菜单资源定义了应用程序的菜单(选项菜单、内容菜单或子菜单),这些菜单能够使用MenuInflater对象来装载。
文件位置(FILE LOCATION):
res/menu/filename.xml
文件名被用作资源ID。
被编译资源的数据类型(COMPILED RESOURCE DATATYPE):
资源指向一个Menu(或其子类)对象。
资源(RESOURCE REFERENCE):
java代码中:R.menu.filename
在XML中:@[package:]menu.filename
语法(SYNTAX):
<?xml version="1.0" encoding="utf-8"?>
<menuxmlns:Android="http://schemas.Android.com/apk/res/Android">
    <itemAndroid:id="@[+][package:]id/resource_name"
          Android:title="string"
          Android:titleCondensed="string"
          Android:icon="@[package:]drawable/drawable_resource_name"
          Android:onClick="method name"
          AndroidhowAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]
          Android:actionLayout="@[package:]layout/layout_resource_name"
          Android:actionViewClass="class name"
          Android:actionProviderClass="class name"
          Android:alphabeticShortcut="string"
          Android:numericShortcut="string"
          Android:checkable=["true" | "false"]
          Android:visible=["true" | "false"]
          Android:enabled=["true" | "false"]
          Android:menuCategory=["container" | "system" | "secondary" | "alternative"]
          Android:orderInCategory="integer"/>
    <groupAndroid:id="@[+][package:]id/resource name"
           Android:checkableBehavior=["none" | "all" | "single"]
           Android:visible=["true" | "false"]
           Android:enabled=["true" | "false"]
           Android:menuCategory=["container" | "system" | "secondary" | "alternative"]
           Android:orderInCategory="integer">
        <item/>
    </group>
    <item>
        <menu>
          <item/>
        </menu>
    </item>
</menu>
元素(ELEMENTS):
<menu>
必须的。它必须是根节点,其中要包含<item>、<group>元素。
属性(ATTRIBUTES):
    xmlns:Android
    它定义了XML的命名空间,必须是:http://schemas.Android.com/apk/res/Android
<item>
它定义一个菜单项,可以包含一个<menu>元素作为子菜单。它必须是<menu>、<group>元素的子元素。
属性(ATTRIBUTES):
    Android:id
    定义资源ID,它是个唯一值,使用“@+id/name”格式可以给这个菜单项创建一个新的资源ID,“+”号指示要创建一个新的ID。
    Android:title
    字符串资源,它用字符串资源或原始的字符串来定义菜单的标题。
    Android:titleCondensed
    字符串资源。它用字符串资源或原始的字符串来定义一个简要的标题,以便在普通的标题太长时来使用。
    Android:icon
    可绘制资源,它定义了一个菜单项所要使用的图标。
    Android:onClick
    方法名。在这个菜单项被点击时,会调用这个方法。在Activity中,这个方法必须用public关键字来声明,并且只接受一个MenuItem对象,这个对象指明了被点击的菜单项。这个方法会优先标准的回调方法:onOptionsItemSelected()。
    警告:如果要使用ProGuard(或类似的工具)来混淆代码,就要确保不要重名这个属性所指定的方法,因为这样能够破坏功能。
    这个属性在API级别11中被引入。
    AndroidhowAsAction
    关键词。它定义这个项目作为操作栏中的操作项的显示时机和方式。只用Activity包含了一个ActionBar对象时,菜单项才能够作为操作项来显示。这个属性在API级别11中被引入,有效值如下:
  
值说明
ifRoom如果有针对这个项目的空间,则只会把它放到操作栏中
withText操作项也要包含文本(通过Android:title属性来定义的)。可以把这个值与其他的Flag设置放到一起,通过管道符“|”来分离它们。
never这个项目不会放到操作栏中
always始终包这个项目放到操作栏中。要避免使用这个设置,除非在操作栏中始终显示这个项目是非常关键的。设置多个项目作为始终显示的操作项会导致操作栏中其他的UI溢出。
icollapseActiionView它定义了跟这个操作项关联的可折叠的操作View对象(用Android:actionViewLayout来声明)。这个关键词在API级别14中被引入。


这个属性在API级别11中被引入。
    Android:actionViewLayout
    它一个布局资源,这个布局要用于操作窗口。更多的信息请参照“操作栏”开发指南。这个属性在API级别11中被引入。

    Android:actionViewClass
    类名。它定义了操作窗口要使用的View对象的完整的类名。例如,“Android.widget.SearchView”说明操作窗口要使用的SearchView类。
    警告:如果要使用ProGuard(或类似的工具)来混淆代码,就要确保不要重名这个属性所指定的方法,因为这样能够破坏功能。
     这个属性在API级别11中被引入。
    Android:actionProviderClass
    类名,它是操作项目所使用的ActionProvider类的完整的类名。例如,“Android.widget.ShareActionProvider”说明要使用ShareActionProvider类。
警告:如果要使用ProGuard(或类似的工具)来混淆代码,就要确保不要重名这个属性所指定的方法,因为这样能够破坏功能。
    这个属性在API级别14中被引入。
    Android:alphabeticShortcut
    字符,定义一个字符快捷键
    Android:numericShortcut
    数字值,定义一个数字快捷键
    Android:checkable
    布尔值,如果菜单项是可以复选的,那么就设置为true。
    Android:checked
    布尔值,如果复选菜单项默认是被选择的,那么就设置为true。
    Android:visible
    布尔值,如果菜单项默认是可见的,那么就设置为true。
    Android:enabled
    布尔值,如果菜单项目默认是可用的,那么就设置为true。
    Android:menuCategory
    关键词。它的值对应了定义菜单项优先级的CATEGORE_*常量,有效值如下:
  
值说明
container菜单项是容器的一部分
system菜单项是由系统提供的。
secondary提供给用户的辅助选择的菜单项(很少使用)
alternative基于当前显示的数据来选择操作的菜单项。
Android:orderInCategory
    整数值,它定义菜单项在菜单组中的重要性的顺序。

<group>
它定义了一个菜单组(它是一个具有共同特征的菜单项的组合,如菜单项的可见性、可用性或可复选性)。它要包含多个<item>元素,而且必须是<menu>元素的子元素。
    属性(ATTRIBUTES):
    Android:id
    资源ID。它是资源的唯一标识。使用“@+id/name”格式给菜单项创建一个新的资源ID。“+”号指示应该给这个元素创建一个新的资源ID。
    Android:checkableBeharior
    关键词。针对菜单组的可复选行为的类型。有效值如下:


值说明
none没有可复选性
all组内的所有的项目都被复选(使用复选框)
single仅有一个项目能够被复选(使用单选按钮)


Android:visible
    布尔值,如果菜单组是可见的,就设置为true。
    Android:enabled
    布尔值,如果菜单组是可用的,就设置为true。
    Android:menuCategory
    关键词。它的值对应了Menu类的CATEGORY_*常量,定义了菜单组的优先级。有效值如下:


值说明
container菜单组是容器的一部分
system菜单组是由系统提供的。
secondary提供给用户的辅助选择的菜单组(很少使用)
alternative基于当前显示的数据来选择操作的菜单组。



Android:orderInCategory
    整数值,它定义了分类中菜单项目的默认顺序。

例子(EXAMPLE):
XML文件被保存在res/menu/example_menu.xml中:
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:id="@+id/item1"
          Android:title="@string/item1"
          Android:icon="@drawable/group_item1_icon"
          AndroidhowAsAction="ifRoom|withText"/>
    <group Android:id="@+id/group">
        <item Android:id="@+id/group_item1"
              Android:onClick="onGroupItemClick"
              Android:title="@string/group_item1"
              Android:icon="@drawable/group_item1_icon" />
        <item Android:id="@+id/group_item2"
              Android:onClick="onGroupItemClick"
              Android:title="@string/group_item2"
              Android:icon="@drawable/group_item2_icon" />
    </group>
    <item Android:id="@+id/submenu"
          Android:title="@string/submenu_title"
          AndroidhowAsAction="ifRoom|withText" >
        <menu>
            <item Android:id="@+id/submenu_item1"
                  Android:title="@string/submenu_item1" />
        </menu>
    </item>
</menu>
下列代码在onCreateOptionMenu(Menu)回调中来加载菜单,并且也给其中的两个菜单项声明了on-click回调方法。
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.example_menu, menu);
    return true;
}
public void onGroupItemClick(MenuItem item) {
    // One of the group items (using the onClick attribute) was clicked
    // The item parameter passed here indicates which item it is
    // All other menu item clicks are handled by onOptionsItemSelected()
}

注意:AndroidhowAsAction属性只在Android3.0以后的版本中有效。




喜欢0 评分0
游客

返回顶部