• Android复习(二)应用资源——>菜单


    菜单资源定义可通过 MenuInflater 进行扩充的应用菜单,包括选项菜单、上下文菜单和子菜单。

    有关使用菜单的指南,请参阅菜单开发者指南。

    文件位置:
    res/menu/filename.xml
    该文件名将用作资源 ID。
    编译后的资源数据类型:
    指向 Menu(或其子类)资源的资源指针。
    资源引用:
    在 Java 中:R.menu.filename
    在 XML 中:@[package:]menu.filename
    语法:
     
       <?xml version="1.0" encoding="utf-8"?>
        <menu xmlns:android="http://schemas.android.com/apk/res/android">
            <item android:id="@[+][package:]id/resource_name"
                  android:title="string"
                  android:titleCondensed="string"
                  android:icon="@[package:]drawable/drawable_resource_name"
                  android:onClick="method name"
                  android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]
                  android:actionLayout="@[package:]layout/layout_resource_name"
                  android:actionViewClass="class name"
                  android:actionProviderClass="class name"
                  android:alphabeticShortcut="string"
                  android:alphabeticModifiers=["META" | "CTRL" | "ALT" | "SHIFT" | "SYM" | "FUNCTION"]
                  android:numericShortcut="string"
                  android:numericModifiers=["META" | "CTRL" | "ALT" | "SHIFT" | "SYM" | "FUNCTION"]
                  android:checkable=["true" | "false"]
                  android:visible=["true" | "false"]
                  android:enabled=["true" | "false"]
                  android:menuCategory=["container" | "system" | "secondary" | "alternative"]
                  android:orderInCategory="integer" />
            <group android: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>
    

      


       
     
    元素:
    必需。该元素必须是根节点。包含 <item> 和/或 <group> 元素。

    属性:

    xmlns:android
    XML 命名空间。必需。定义 XML 命名空间,该命名空间必须为 "http://schemas.android.com/apk/res/android"
    <item>
    菜单项。可能包含 <menu> 元素(用于子菜单)。必须是 <menu> 或 <group> 元素的子元素。

    属性:

    android:id
    资源 ID。唯一资源 ID。要为此项创建新的资源 ID,请使用以下形式:"@+id/name"。加号表示应将其创建为新 ID。
    android:title
    字符串资源。字符串资源或原始字符串形式的菜单标题。
    android:titleCondensed
    字符串资源。字符串资源或原始字符串形式的压缩标题。此标题在正常标题过长的情况下使用。
    android:icon
    可绘制资源。用作菜单项图标的图片。
    android:onClick
    方法名称。点击此菜单项时调用的方法。此方法必须在 Activity 中声明为公共方法,并接受 MenuItem 作为其唯一参数,该参数指示所点击的项。此方法优先于对 onOptionsItemSelected() 的标准回调。请参见页面结尾处的示例。

    警告:如果您使用 ProGuard(或类似工具)混淆代码,切记不要重命名在此属性中指定的方法,因为这样会破坏功能。

    在 API 级别 11 中引入。

    android:showAsAction
    关键字。指示此项应在应用栏中显示为操作项的时机和方式。菜单项只有在 Activity 包含应用栏时才能显示为操作项。有效值:
    说明
    ifRoom 只有在应用栏中有空间的情况下,才将此项放置其中。如果没有足够的空间来容纳标记为 "ifRoom" 的所有项,则 orderInCategory 值最低的项会显示为操作,其余项将显示在溢出菜单中。
    withText 此外,还会随操作项添加标题文本(由 android:title 定义)。您可以将此值与某个其他值一起作为标记集添加,用竖线 | 分隔。
    never 不得将此项放在应用栏中,而应将其列在应用栏的溢出菜单中。
    always 始终将此项放在应用栏中。除非此项必须始终显示在操作栏中,否则请勿使用该值。将多个项设置为始终显示为操作项,会导致它们与应用栏中的其他界面重叠。
    collapseActionView 与此操作项相关联的操作视图(由 android:actionLayout 或 android:actionViewClass 声明)是可收起的。
    在 API 级别 14 中引入。

    如需了解详情,请参阅添加应用栏培训课程。

    在 API 级别 11 中引入。

    android:actionLayout
    布局资源。用作操作视图的布局。

    如需了解详情,请参阅操作视图和操作提供器

    在 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:alphabeticModifiers
    关键字。菜单项的字母快捷键的辅助键。默认值对应于 Control 键。有效值:
    说明
    META 对应于 Meta 元键
    CTRL 对应于 Control 元键
    ALT 对应于 Alt 元键
    SHIFT 对应于 Shift 元键
    SYM 对应于 Sym 元键
    FUNCTION 对应于 Function 元键

    注意:您可以在一个属性中指定多个关键字。例如,android:alphabeticModifiers="CTRL|SHIFT" 表示要触发相应的菜单项,用户需要同时按下 Control 和 Shift 元键以及快捷键。

    您可以使用 setAlphabeticShortcut() 方法以编程方式设置属性值。要详细了解 alphabeticModifier 属性,请转到 alphabeticModifiers

    android:numericModifiers
    关键字。菜单项的数字快捷键的辅助键。 默认值对应于 Control 键。有效值:
    说明
    META 对应于 Meta 元键
    CTRL 对应于 Control 元键
    ALT 对应于 Alt 元键
    SHIFT 对应于 Shift 元键
    SYM 对应于 Sym 元键
    FUNCTION 对应于 Function 元键

    注意:您可以在一个属性中指定多个关键字。例如,android:numericModifiers="CTRL|SHIFT" 表示要触发相应的菜单项,用户需要同时按下 Control 和 Shift 元键以及快捷键。

    您可以使用 setNumericShortcut() 方法以编程方式设置属性值。要详细了解 numericModifier 属性,请转到 numericModifiers

    android:checkable
    布尔值。如果该项可勾选,则为“true”。
    android:checked
    布尔值。如果默认情况下该项为勾选状态,则为“true”。
    android:visible
    布尔值。如果默认情况下该项可见,则为“true”。
    android:enabled
    布尔值。如果默认情况下该项为启用状态,则为“true”。
    android:menuCategory
    关键字。对应于 Menu CATEGORY_* 常量的值,这些常量用于定义项的优先级。有效值:
    说明
    container 这类项归属于容器。
    system 这类项由系统提供。
    secondary 这类项是用户提供的次要(不常用)选项。
    alternative 这类项是对当前显示的数据的替代操作。
    android:orderInCategory
    整数。项在组内的“重要性”顺序。
    <group>
    一个菜单组,用于创建一组具有相同特征(例如是否可见、是否启用或是否可勾选)的项。包含一个或多个 <item> 元素。必须是 <menu> 元素的子元素。

    属性:

    android:id
    资源 ID。唯一资源 ID。要为此项创建新的资源 ID,请使用以下形式:"@+id/name"。加号表示应将其创建为新 ID。
    android:checkableBehavior
    关键字。组的可勾选行为类型。有效值:
    说明
    none 不可勾选
    all 可以勾选所有项(使用复选框)
    single 只能勾选一项(使用单选按钮)
    android:visible
    布尔值。如果组可见,则为“true”。
    android:enabled
    布尔值。如果组为启用状态,则为“true”。
    android:menuCategory
    关键字。对应于 Menu CATEGORY_* 常量的值,这些常量用于定义组的优先级。有效值:
    说明
    container 这类组归属于容器。
    system 这类组由系统提供。
    secondary 这类组是用户提供的次要(不常用)选项。
    alternative 这类组是对当前显示的数据的替代操作。
    android:orderInCategory
    整数。项在类别中的默认顺序。
    示例:
    保存在 res/menu/example_menu.xml 的 XML 文件:
        <menu xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto">
            <item android:id="@+id/item1"
                  android:title="@string/item1"
                  android:icon="@drawable/group_item1_icon"
                  app:showAsAction="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"
                  app:showAsAction="ifRoom|withText" >
                <menu>
                    <item android:id="@+id/submenu_item1"
                          android:title="@string/submenu_item1" />
                </menu>
            </item>
        </menu>
    

      


       
     

    以下应用代码会通过 onCreateOptionsMenu(Menu) 回调扩充菜单,还会声明其中两个项的点击回调:

    java代码:
    
        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 <code><a href="/reference/android/app/Activity.html#onOptionsItemSelected(android.view.MenuItem)">onOptionsItemSelected()</a></code>
        }
        
    
    kotlin代码:
    
        override fun onCreateOptionsMenu(menu: Menu): Boolean {
            menuInflater.inflate(R.menu.example_menu, menu)
            return true
        }
    
        fun onGroupItemClick(item: MenuItem) {
            // 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 <code><a href="/reference/android/app/Activity.html#onOptionsItemSelected(android.view.MenuItem)">onOptionsItemSelected()</a></code>
        }
        
    

      


       
  • 相关阅读:
    UVA 11235 (游程编码+ST算法)
    CodeForces 359D (数论+二分+ST算法)
    线性动态规划
    AC自动机
    KMP
    字典树
    Treap和名次树
    线段树
    最小生成树
    【VS】使用vs2017自带的诊断工具(Diagnostic Tools)诊断程序的内存问题
  • 原文地址:https://www.cnblogs.com/developer-wang/p/12619671.html
Copyright © 2020-2023  润新知