<Android>菜单资源的使用

典型菜单资源结构:<menu>根元素且没有属性,在<menu>根元素里面会嵌套<item>和<group>子元素,<item>里面可以嵌套<menu>形成子菜单。

<group>表示一个菜单组,相同的菜单组可以一起设置其属性,属性说明如下

id:唯一标示该菜单组的引用id

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

orderInCategory:一个分类排序整数

checkableBehavior:选择行为,单选多选还是其它,有效值为none,all,single

visable:是否可见,true或false

enabled:是否可见,true或false

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

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

orderInCategory:分类排序

menuCategory:菜单分类

title:菜单标题字符串

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

icon:菜单的图标

alphabeticShortcut:字符快捷键

numericShortcut:数字快捷键

checkable:是否可选

checked:是否已被选中

visible:是否可见

enabled:是否可用

1.菜单xml文件示例file_menu.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/file">

        <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/edit">

        <menu>

            <group android:id="@+id/edit_group"

                    android:checkableBehavior="single">

                <item android:id="@+id/cut"

                      android:title="Cut" />

                <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/help">

        <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.java代码中加载菜单

//private MenuInflater mi;

//mi = new MenuInflater(this);

/*

 * 创建菜单

 */

public boolean onCreateOptionsMenu(Menu menu) {

    mi.inflate(R.menu.file_menu, menu);

    return true;

}

//菜单响应

@Override

public boolean onOptionsItemSelected(MenuItem item) {

   switch (item.getItemId()) {

   case R.id.about:

          aboutAlert("本实例演示的是如何使用XML菜单资源来定义菜单!");

          break;

   case R.id.exit:

          exitAlert("真的要退出吗?");

          break;

   }

   return true;

}

// 显示对话框

private void exitAlert(String msg){

   AlertDialog.Builder builder = new AlertDialog.Builder(this);

   builder.setMessage(msg)

          .setCancelable(false)

          .setPositiveButton("确定", new DialogInterface.OnClickListener() {

              public void onClick(DialogInterface dialog, int id) {

                     finish();

              }

          }).setNegativeButton("取消", new DialogInterface.OnClickListener() {

              public void onClick(DialogInterface dialog, int id) {

                     return;

              }

          });

   AlertDialog alert = builder.create();

   alert.show();

}

// 显示对话框

private void aboutAlert(String msg){

   AlertDialog.Builder builder = new AlertDialog.Builder(this);

   builder.setMessage(msg)

          .setCancelable(false)

          .setPositiveButton("确定", new DialogInterface.OnClickListener() {

              public void onClick(DialogInterface dialog, int id) {

              }

          });

   AlertDialog alert = builder.create();

   alert.show();

}

直接在java代码中使用

选项菜单

1.覆盖Activity的onCreateOptionsMenu(Menu menu)方法,第一次打开菜单时该方法被自动跳用

2.调用Menu的add()方法添加菜单项(MenuItem),可以调用MenuItem的setIcon()方法设置菜单项图标

3.当菜单项被选择时,覆盖Activity的onOptionsItemSelected()方法来响应事件

public class MainActivity extends Activity {

   private static final int ITEM1 = Menu.FIRST;

   private static final int ITEM2 = Menu.FIRST+1;

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

    }

   /**

    * 覆盖该方法添加菜单项

    */

   public boolean onCreateOptionsMenu(Menu menu) {

          menu.add(0, ITEM1, 0, "开始");

          menu.add(0, ITEM2, 0, "退出");

          return true;

   }

    /**

     * 覆盖该方法,响应菜单选项被单击事件

     */

    public boolean onOptionsItemSelected(MenuItem item) {

       switch (item.getItemId()) {

          case ITEM1:

                 setTitle("开始游戏!");

                 break;

          case ITEM2:

                 setTitle("退出!");

                 break;

          }

       return true;

    }

}

上下文菜单

1.覆盖Activity的onCreateContextMenu()方法,调用Menu的add方法添加菜单项(MenuItem).

2.覆盖onContextItemSelected()方法,响应菜单单击事件。

3.调用registerForContextMenu()方法,为视图注册上下文菜单。

public void onCreate(Bundle savedInstanceState) {

   super.onCreate(savedInstanceState);

   setContentView(R.layout.main);

   myTV = (TextView)findViewById(R.id.TextView01);

   registerForContextMenu(myTV);

}

@Override

public void onCreateContextMenu(ContextMenu menu, View v,

          ContextMenuInfo menuInfo) {

   menu.add(0, ITME1, 0, "红色背景");

   menu.add(0, ITME2, 0, "绿色背景");

   menu.add(0, ITME3, 0, "白色背景");

}

@Override

public boolean onContextItemSelected(MenuItem item) {

   switch (item.getItemId()) {

   case ITME1:

          myTV.setBackgroundColor(Color.RED);

          break;

   case ITME2:

          myTV.setBackgroundColor(Color.GREEN);

          break;

   case ITME3:

          myTV.setBackgroundColor(Color.WHITE);

          break;

   }

   return true;

}

子菜单

1.覆盖Activity的onCreateOptionsMenu()方法,调用Menu的addSubMenu()方法添加子菜单项(Sub Menu)

2.调用SubMenu的add()方法,添加子菜单(Sub Menu)

3.覆盖onOptionsItemSelected()方法,响应菜单单击事件

public class MainActivity extends Activity {

   private static final int ITEM1 = Menu.FIRST;

   private static final int ITEM2 = Menu.FIRST+1;

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

    }

   /**

    * 覆盖该方法添加子菜单项

    */

   public boolean onCreateOptionsMenu(Menu menu) {

          SubMenu file = menu.addSubMenu("文件");

          SubMenu edit = menu.addSubMenu("編輯");

          file.add(0, ITEM1, 0, "新建");

          file.add(0, ITEM2, 0, "打开");

          return true;

   }

    /**

     * 覆盖该方法,响应菜单选项被单击事件

     */

    public boolean onOptionsItemSelected(MenuItem item) {

       switch (item.getItemId()) {

          case ITEM1:

                 setTitle("新建文件!");

                 break;

          case ITEM2:

                 setTitle("打开文件!");

                 break;

          }

       return true;

    }
时间: 2025-01-07 10:55:45

<Android>菜单资源的使用的相关文章

Android 资源详解(二) 菜单资源

菜单资源也是一个XML文件,定义于res/menu/main.xml目录,用R.menu.main引用 典型的菜单资源文件结构是:<menu>根原素,在其中嵌套<item>和<group>子元素,<item>中也可以嵌套<menu>元素. <menu>根元素中没有属性,它包含<item>和<group>元素 <group>表示一个菜单组,相同的属性可以在菜单组中设置 group常见属性如下: id:

android菜单(menu)资源

一. 菜单资源通常放在res/menu目录下,菜单资源是的根元素通常是<menu></menu>标记,在该标记下可以包含以下两个元素. 1.<item></item>标记:用于定义菜单项. 2.<group></group>标记:用于将多个<item></item>标记定义的菜单包装成一个菜单组. 在menu_main.xml的具体代码如下: <menu xmlns:android="http:

Android学习笔记(34):Android菜单

Android的菜单分为三种类型:选项菜单(Option Menu).上下文菜单(Context Menu).子菜单(Sub Menu). 选项菜单(Option Menu):按设备上的菜单按钮(Menu)会出现的菜单.不支持勾选标记. 上下文菜单(Context Menu):长按某个组件会出现的菜单.不支持菜单项图标. 子菜单(SubMenu):就是子菜单.不支持菜单项图标,不支持嵌套子菜单. Menu类用于添加菜单项和子菜单的方法是add()和addSubMenu(): MenuItem a

Android 菜单详解

Android中菜单分为三种,选项菜单(OptionMenu),上下文菜单(ContextMenu),子菜单(SubMenu) 选项菜单 可以通过两种办法增加选项菜单,一是在menu.xml中添加,该种方式参见Android 资源详解(二) 菜单资源,二是在.java中添加 1.覆盖Activity 的 onCreateOptionsMenu(Menu  menu)方法,当我们第一次打开菜单 时该方法被自动调用. 2.调用Menu的 add()方法添加菜单项(Menultem) ,可以调用Men

Android开发资源推荐第2季

Android CPU监控想法,思路,核心技术和代码 http://www.csdn123.com/html/blogs/20131026/89017.htm Android App /Task/Stack 总体分析 http://www.eoeandroid.com/thread-161703-1-1.html Android Widget设计指南 http://mobile.51cto.com/widget-248860_all.htm 系统深入学习android http://www.cn

开发者必备的十二大Android开发资源

开发者必备的十二大Android开发资源 摘要: 论你是经验丰富的专业Android开发者,还是初出茅庐的新人,开发应用最忌讳的就是闭门造车.不能把自己圈在自己的思维里,要学会借助外在现有的资源去协助开发,这样既不会让自己固步自封,还能够提高工作效率. ... 无论你是经验丰富的专业Android开发者,还是初出茅庐的新人,开发应用最忌讳的就是闭门造车.不能把自己圈在自己的思维里,要学会借助外在现有的资源去协助开发,这样既不会让自己固步自封,还能够大大提高工作效率.在这里,本文介绍的这些资源包括

Android应用资源的使用方法(数组、颜色、尺寸、字符串、布尔、整数)

一.Android中资源分类详解 1.Android资源分类 Android中的资源分为两大类 : 可直接访问的资源, 无法直接访问的原生资源; -- 直接访问资源 : 这些资源可以使用 R. 进行访问, 都保存在res目录下, 在编译的时候, 会自动生成R.java 资源索引文件; -- 原生资源 : 这些资源存放在assets下, 不能使用 R类 进行访问, 只能通过 AssetManager 以二进制流形式读取资源; 2.Android资源详解 res目录下资源详解 : -- res/an

Android应用资源

Java刚開始学习的人直接在Java源代码使用"hello" 和123 类型的字符串和整型.但时间长了就会忘记当初定义的原因,有经验的或许会定义字符串常量ResultSet.TYPE_FORWARD_ONLY,有经验的一看就知道其原因.这样的写法已经减少了耦合性,Android则对这些字符串常量.数值常量进行进一步的改进:把用到的各种资源字符串常量.颜色资源.数组资源.菜单资源都集中放到res文件夹下.应用程序则直接使用这些资源中定义的值. 资源类型及存储方式 Android应用资源可

Android菜单—Menu

菜单是常用的用户界面元素,在Android系统里提供了3种类型的菜单. (1)选项菜单(options menu):按设备上Menu 键显示的菜单. (2)上下文菜单(context menu):长按特定界面view显示,跟具体的 view 绑定在一起,类似PC上鼠标右键菜单. (3)子菜单(sub menu):以上两种菜单都可以加入子菜单,但子菜单不能再嵌套子菜单. 下面我们通过一个例子来演示3种菜单的基本用法. 菜单的XML资源文件放在res/menu目录下. optionmenu.xml