`
abc20899
  • 浏览: 933614 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android 中自定义 Menu 资源

阅读更多
今晚在做应用程序时,需要用到 Menu。左思右想还是决定编写 menu.xml 的方式来完成,这样做的好处:1、方便管理(这也正是android应用xml的原因之一);2、便于修改。在 Android 中任何视图组件的创建方式都有两种:1、在XML文件中创建;2、在代码中创建。Menu 也不例外,我们既可以在资源文件中声明,也可以在代码中创建。

Android 中的菜单分为:1、选项菜单 ,2、上下文菜单和子菜单,都可以在XML文件中声明定义,在代码中通过MenuInflater 类来使用。本节主要讲 Menu 在 XML 中的定义以及在程序中的应用。


一、 Menu 资源文件的定义

Menu 资源文件也是一个XML文件,该文件存放于工程的res\menu\menu.xml 目录下。通过R.menu.menu的方式来引用。

Menu 资源文件的结构:

  1、<menu>根元素,在<menu>根元素里面会嵌套<item>和<group>子元素,<menu>根元素没有属性。

  2、<item>元素中也可嵌套<menu>形成子菜单。

          3、<group>表示一个菜单组,相同的菜单组可以一起设置其属性,例如visible、enabled和checkable等。<group>元素的属性说明如下:
—   id:唯一标示该菜单组的引用id。

— menuCategory:对菜单进行分类,定义菜单的优先级,有效值为container、system、secondary和alternative。

—     orderInCategory:一个分类排序整数。

—     checkableBehavior:选择行为,单选、多选还是其他。有效值为none、all和single。

— visible:是否可见,true或者false。

— enabled:是否可用,true或者false。




<item>表示菜单项,包含在<menu>或<group>中的有效属性。<item>元素的属性说明如下。

—     id:唯一标示菜单的ID引用。

—     menuCategory:菜单分类。

—     orderInCategory:分类排序。

—     title:菜单标题字符串。

—     titleCondensed:浓缩标题,适合标题太长的时候使用。

—     icon:菜单的图标。

—     alphabeticShortcut:字符快捷键。

— numericShortcut:数字快捷键。

— checkable:是否可选。

— checked:是否已经被选。

—    visible:是否可见。

— enabled:是否可用。

二、Menu 在程序中的应用

       在定义了 Menu  后,接下来就是在程序中去应用它,方法如下:
      @Override
      public boolean onCreateOptionsMenu(Menu menu){
         MenuInflater inflater = getMenuInflater();
         inflater.inflate(R.menu.menu, menu);
         return super.onCreateOptionsMenu(menu);
      }

下面来个实例:
1、定义Menu 文件(res\menu\blacklist.xml):
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:title="File" android:icon="@drawable/icon">
        <menu>
            <group android:id="@+id/noncheckable_group"
                android:checkableBehavior="none">
                <item android:id="@+id/newFile" android:title="New"
                    android:alphabeticShortcut="n" />
                <item android:id="@+id/openFile" android:title="Open"
                    android:alphabeticShortcut="o" />
                <item android:id="@+id/saveFile" android:title="Save"
                    android:alphabeticShortcut="s" />
            </group>
        </menu>
    </item>

    <item android:title="Edit" android:icon="@drawable/icon">
        <menu>
            <group android:id="@+id/edit_group" android:checkableBehavior="single">
                <item android:id="@+id/cut" android:title="Cut" android:checked="true"/>
                <item android:id="@+id/copy" android:title="Copy" />
                <item android:id="@+id/past" android:title="Past" />
            </group>
        </menu>
    </item>

    <item android:title="Help" android:icon="@drawable/icon">
        <menu>
            <group android:id="@+id/help_group">
                <item android:id="@+id/about" android:title="About" />
                <item android:id="@+id/exit" android:title="Exit" />
            </group>
        </menu>
    </item>
</menu>   

2、程序中应用:
  @Override
  public boolean onCreateOptionsMenu(Menu menu){
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.blacklist, menu);
    return super.onCreateOptionsMenu(menu);
  }
分享到:
评论

相关推荐

    Android自定义menu的实现

    本篇将深入探讨如何在Android中实现自定义Menu。 首先,我们需要了解Android系统的Menu机制。Android中的Menu主要分为三类:Option Menu(主菜单)、Context Menu(上下文菜单)和PopupMenu(弹出式菜单)。Option ...

    android使用popupwindow自定义menu菜单

    下面是一段示例代码,展示了如何创建一个简单的自定义menu菜单: ```java // 加载布局 LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); View popupView = ...

    Android提高十八篇之自定义Menu(TabMenu)

    在Android开发中,自定义Menu和TabMenu是提升用户体验、个性化应用界面的重要手段。这篇“Android提高十八篇之自定义Menu(TabMenu)”的主题聚焦于如何在Android应用中创建和定制化自己的菜单栏和标签页功能。下面...

    Android中自定义标题栏项目源码

    在Android应用开发中,自定义标题栏是一种常见的需求,它能提供更加个性化和与应用主题相符的用户体验。本文将深入探讨如何在Android中实现自定义标题栏,包括修改其高度和修复可能出现的显示问题。 首先,我们要...

    android自定义弹出menu

    本示例“android自定义弹出menu”着重介绍了如何创建一个类似于QuickContactBadge的自定义菜单,它具有出色的动画效果,提升了应用的用户体验。 QuickContactBadge是Android SDK中一个用于快速联系的组件,点击后...

    android menu自定义菜单 Demo

    本示例"android menu自定义菜单 Demo"将向我们展示如何在Android应用程序中创建和定制菜单项,以提供更加丰富的交互功能。让我们深入探讨一下这个话题。 首先,菜单在Android中主要用于在不占据屏幕主要空间的情况...

    android中自定义actionbar

    本篇将深入探讨在Android中如何自定义Action Bar,基于提供的链接资源`http://blog.csdn.net/zhong1113/article/details/46332563`。 首先,我们需要理解Action Bar的基本结构。它通常包含以下部分: 1. 应用程序...

    android自定义菜单使用技巧

    本文将深入探讨如何实现Android自定义菜单,并结合QuickContactBadge控件的使用,为用户提供更加丰富的交互体验。 首先,我们来了解自定义菜单的基本概念。在Android中,菜单通常在Action Bar或Overflow Menu中显示...

    android menu菜单距中显示

    Android默认的`Menu`布局是左对齐的,但我们可以修改主题或者在XML布局中添加自定义样式来实现居中。这通常涉及到更改`android:layout_gravity`属性,或者在自定义样式中设置`android:gravity`。 如果想要全局改变...

    自定义Menu

    自定义Menu是Android开发中的一个重要概念,它允许开发者根据应用的需求创建个性化的菜单项,以提供更为丰富的用户体验。在Android应用中,Menu主要用于在特定场景下显示一系列操作选项,如在活动(Activity)的选项...

    Android自定义菜单属性DEMO

    总结一下,"Android自定义菜单属性DEMO"主要教授了如何在Android应用中创建一个自定义的菜单按钮组件,并通过自定义属性控制其外观和行为。这包括在attr.xml文件中定义属性,解析这些属性并在自定义View类中使用它们...

    自定义Menu菜单

    总结,自定义Android中的`Menu`菜单涉及XML资源文件的编写、菜单项的响应处理以及组件的选择和布局设计。通过以上步骤,我们可以创建出类似UC浏览器那样功能丰富的菜单,提高用户体验。在实际开发中,应结合具体需求...

    Android自定义标题栏

    总结,Android自定义标题栏是一项关键的UI定制技术,它让开发者能够创建符合品牌风格的界面,提升用户交互体验。通过学习和实践,我们可以熟练掌握自定义标题栏的各种技巧,包括但不限于添加菜单项、设置点击事件、...

    android 使用菜单menu资源

    创建Menu资源 在`res`目录下,创建一个新的文件夹`menu`(如果尚未存在)。在`menu`文件夹内,创建一个XML文件,例如`main_menu.xml`。这个XML文件将定义`Menu`的结构。 ```xml &lt;menu xmlns:android=...

    android 自定义菜单

    在Android开发中,自定义菜单是一项重要的功能,它允许开发者为应用程序创建个性化和功能丰富的交互界面。本篇文章将深入探讨如何在Android系统中实现自定义菜单,并提供相关的知识点。 首先,我们来理解Android中...

    android自定义通用PopupWindow

    在Android开发中,`PopupWindow` 是一个非常实用的组件,它允许我们创建弹出式窗口,用于显示一些临时信息或者交互操作。本教程将详细讲解如何封装一个通用的`PopupWindow`,以便在项目中复用,降低代码冗余,提高...

    Android 按Menu弹出菜单

    创建Menu资源** 首先,我们需要在项目的res/menu目录下创建一个XML文件,例如`menu.xml`,用于定义菜单项。在这个XML文件中,我们可以使用`&lt;menu&gt;`标签作为根元素,然后用`&lt;item&gt;`标签来定义每个菜单项,包括其ID、...

    Android代码-menu单选菜单.zip

    在本资源“menu单选菜单.zip”中,我们很显然关注的是如何在Android中创建和使用单选菜单(Radio Menu)。单选菜单允许用户在多个选项中选择一个,只有一个选项可以被选中。接下来,我们将深入探讨这一主题。 首先...

Global site tag (gtag.js) - Google Analytics