android MENU自定义开发

2025-11-24 05:13:42

1、首先新建一个android项目,名字叫做MenuSelfShow,其余的参数,用户可以自己设置,点击完成,即可生成项目信息。

android MENU自定义开发

android MENU自定义开发

2、定义menuself.xml

<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:title="新建" android:icon="@drawable/icon" android:id="@+id/newinfo">

        <menu>

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

                android:checkableBehavior="none">

                <item android:id="@+id/newFile" android:title="新建文件"/>

                <item android:id="@+id/newDoc" android:title="新建文档"/>

                <item android:id="@+id/newList" android:title="新建列表"/>

            </group>

        </menu>

    </item>

    <item android:title="查看" android:icon="@drawable/icon" android:id="@+id/view">

        <menu>

            <group android:id="@+id/view_group" android:checkableBehavior="single">

                <item android:id="@+id/viewinfo" android:title="信息" android:checked="true"/>

                <item android:id="@+id/info" android:title="详情" />

            </group>

        </menu>

    </item>

    <item android:title="删除" android:icon="@drawable/icon" android:id="@+id/delete">

        <menu>

            <group android:id="@+id/delete_group">

                <item android:id="@+id/deleteone" android:title="删除详情" />

                <item android:id="@+id/deletelist" android:title="删除列表" />

            </group>

        </menu>

    </item>

</menu>

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:是否可用。

android MENU自定义开发

3、对于MENU而言,MENU的初始化流程

菜单初始化:onCreateOptionsMenu(Menu menu)

菜单被选中:onOptionsItemSelected(MenuItem item)

菜单关闭: onOptionsMenuClosed(Menu menu)

选项菜单显示之前:onPrepareOptionsMenu(Menu menu)

打开菜单后的动作: onMenuOpened(int featureId, Menu menu)

在实例中,复写onCreateOptionsMenu(Menu menu)生成菜单,调用自定义的MENU样式。

public boolean onCreateOptionsMenu(Menu menu) {

// TODO Auto-generated method stub

    MenuInflater inflater = getMenuInflater();

    inflater.inflate(R.layout.menuself, menu);//调用自定义MENU样式

return super.onCreateOptionsMenu(menu);

}

android MENU自定义开发

4、重写public boolean onOptionsItemSelected(MenuItem item),菜单选项被选中触发的事件

public boolean onOptionsItemSelected(MenuItem item) {

// TODO Auto-generated method stub

switch(item.getItemId()){

      case R.id.delete:

          Toast.makeText(MenuShow.this, ""+"删除菜单", Toast.LENGTH_SHORT).show();

          break;

      case R.id.view: 

          Toast.makeText(MenuShow.this, ""+"查看菜单", Toast.LENGTH_SHORT).show();

          break;

      case R.id.newinfo:   

          Toast.makeText(MenuShow.this, ""+"新建菜单", Toast.LENGTH_SHORT).show();

          break;

      case R.id.viewinfo:  

          Toast.makeText(MenuShow.this, ""+"信息菜单", Toast.LENGTH_SHORT).show();

          break;

      case R.id.info:   

          Toast.makeText(MenuShow.this, ""+"详情菜单", Toast.LENGTH_SHORT).show();

          break;

      case R.id.newFile:

          Toast.makeText(MenuShow.this, ""+"新建文件菜单", Toast.LENGTH_SHORT).show();

          break;

      case R.id.newDoc:

          Toast.makeText(MenuShow.this, ""+"新建文档菜单", Toast.LENGTH_SHORT).show();

          break;

      case R.id.newList:

          Toast.makeText(MenuShow.this, ""+"新建列表菜单", Toast.LENGTH_SHORT).show();

          break;

      case R.id.deleteone:

          Toast.makeText(MenuShow.this, ""+"删除详情菜单", Toast.LENGTH_SHORT).show();

          break;

      case R.id.deletelist:

          Toast.makeText(MenuShow.this, ""+"删除列表菜单", Toast.LENGTH_SHORT).show();

          break; 

      }

return super.onOptionsItemSelected(item);

}

android MENU自定义开发

5、程序书写完成,运行程序,可以观察程序运行结果

android MENU自定义开发

android MENU自定义开发

android MENU自定义开发

android MENU自定义开发

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢