Menu的使用

1、  普通Menu

(1)       onCreateOptionsMenu方法

例如:public boolean onCreateOptionsMenu(Menu menu)

  { //增加菜单项

   super.onCreateOptionsMenu(menu);      

    menu.add(0,0,0,"Home").

    setIcon(R.drawable.home).

    setShortcut('3', 'h');

    return true;

   }

 

(2)       onPrepareOptionsMenu方法

//添加Menu菜单项

 public boolean onPrepareOptionsMenu(Menu menu)

  {

      menu.add(0, ITEM1, 0, "Insert");

         menu.add(0, ITEM2, 0, "Delete");

  }

(3)       onOptionsItemSelected方法

Menu菜单项进行监听

public boolean onOptionsItemSelected(MenuItem item)

    {

    String menuItem = new String();

        switch (item.getItemId()) //得到Itemid

        {

        case ITEM1:        menuItem = "Menu Item Insert";          break;

        case ITEM2:        menuItem = "Menu Item Delete";        break

        }

    return super.onOptionsItemSelected(item);

}

 

2、 SubMenu

    SubMenu在onCreateOptionsMenu中实现,例如:

// 创建子菜单方法实现

public boolean onCreateOptionsMenu(Menu menu)

    {

          super.onCreateOptionsMenu(menu);       

          menu.add(0, ITEM1, 0, "Add")

                    .setShortcut('3', 'a')

                    .setIcon(R.drawable.home);

        //创建子菜单,添加子菜单

           SubMenu smenu = menu.addSubMenu(1, ITEM2, 0, “SubMenu”);

            smenu.add(0, ITEM3, 0,"subMenu1");

            smenu.add(0, ITEM4, 0,"subMenu2");

            smenu.setHeaderIcon(R.drawable.home);

            smenu.setIcon(R.drawable.computer);

        return true;

    }

点击“SubMenu”后就会出现子菜单,有两个子选项,分别是“SubMenu1”和“SubMenu2”。

3、  Context Menu

      长按某个View之后弹出来的菜单。

首先要注册一下,在onCreate方法里,如下代码:

public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        b1 = (Button) findViewById(R.id.b1);

        b2 = (Button) findViewById(R.id.b2);

        registerForContextMenu(b1);

        registerForContextMenu(b2);

}

 

@Override

    public void onCreateContextMenu(ContextMenu menu, View v,

            ContextMenuInfo menuInfo) {

        // TODO Auto-generated method stub

        if(v==b1){

            menu.setHeaderTitle("这是1");

            menu.setHeaderIcon(R.drawable.calculator);

            menu.add(200, 200, 200, "Context Menu 1");

            menu.add(200, 201, 201, "Context Menu 2");

        }

        else if(v==b2){

            menu.setHeaderTitle("这是2");

            menu.add(300, 300, 300, "C 1");

            menu.add(300, 301, 301, "C 2");

        }

        super.onCreateContextMenu(menu, v, menuInfo);

    }

对长击控件子菜单的响应,onContextItemSelected方法

 

4、  动态Menu

       动态菜单就是根据不同的界面有不同的菜单。在onPrepareOptionsMenu方法中实现。

5、  用Xml文件创建Menu

      xml配置文件也可以相当方便地制作菜单。

res/目录下建一个文件夹,名为menu,下面建一个xml文件,名为menu_xml_file.xml,代码如下:

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

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

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

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

                android:title="This 1"/>

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

            android:title="This 2" />

</group>

</menu>

Activity中覆盖onCreateOptionsMenu(Menu menu)方法,代码如下:

@Override

    public boolean onCreateOptionsMenu(Menu menu) {

        // TODO Auto-generated method stub

        MenuInflater inflater = getMenuInflater();

        inflater.inflate(R.menu.menu_xml_file, menu);

        return true;

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值