第3.1.7节 创建菜单

android中的菜单有两种:一种是通过MENU键激活,叫Options Menu;另一种是当用户长按一个元素时激活,叫Context Menu。

当用户长按一个控件时,可以弹出相应的菜单。

(1)Options Menu

Options Menu 用于当前的Activity,它包括两种菜单项;

icon menu:options menu在屏幕底部最多只能显示6个菜单项,这些菜单项为icon menu ,icon menu只支持文字(title)以及icon,可以设置快捷键,不支持checkbox以及radio控件,所以本能设置checkable选项。

(2)Context Menu

Context Menu用于view,跟某个具体的view绑定在一起,该类型的菜单不支持icon和快捷键。

(3)以下代码实现了相应的功能:

Android中的菜单有两种,一种是通过MENU键激活,叫Options Menu;另一种是当用户长按一个元素时激活,叫Context Menu。

Options Menu

在Activity里面,一般通过以下方法来使用Options Menu:

(1)onCreateOPtionsMenu(Menu menu) 创建Options Menu,这个方法只会在menu第一次显示时调用。

(2)onPrepareOptionsMenu(Menu menu) 更新改变Options Menu的内容,这个方法会在menu每次显示时调用。

(3)onOptionsItemSelected(MenuItem item)处理选中的菜单。

Options Menu示例:

代码:

package com.MenuTest;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.widget.EditText;

public class MenuTestActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        t1=(EditText) findViewById(R.id.t1);
    }
    EditText t1;
    @Override
    public boolean onCreateOptionsMenu(Menu menu)//创建Option Menu菜单,只会在Menu第一次显示时调用
    {
        super.onCreateOptionsMenu(menu);
       menu.add(1,1,1,"菜单1");
       menu.add(1,2,2,"菜单2");
       menu.add(1,3,3,"菜单3");
     SubMenu submenu=menu.addSubMenu(1,4,4,"菜单4");//添加子菜单
       submenu.add("子菜单1");
       submenu.add("子菜单2");
       submenu.add("子菜单3");
      
       return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) //处理选中的菜单项;单击某个菜单项时,将菜单Text值赋给EditText
    {
        super.onOptionsItemSelected(item);
        switch(item.getItemId())//获得菜单的ID编号
        {
        case 1: t1.setText("菜单1");break;
        case 2: t1.setText("菜单2");break;
        case 3: t1.setText("菜单3");break;
        case 4: t1.setText("菜单4");break;
        }
        return true;
        
    }
}

2. Context Menu

在Activity里面,一般通过以下方法来使用Context Menu:

(1) registerForContextMenu(View view)为某个View 注册Context Menu,一般在Activity的onCreate里面调用。

(2) onCreateContextMenu(ContextMenu menu,View v,ContextMenu context MenuInfo menuinfo)创建context menu,和 Options Menu不同,context menu每次是显示时都会调用这个方法。

(3) onContextItemSelected(MenuItem item)处理选中的菜单项。

Context Menu示例:

代码:

package com.MyContext;

import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View;
import android.widget.Button;

public class MyContextActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button button1=(Button) findViewById(R.id.button1);
        this.registerForContextMenu(button1);
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        // TODO Auto-generated method stub
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.setHeaderTitle("Context Menu");
        menu.add("菜单1");
        menu.add("菜单2");
        menu.add("菜单3");
    }
    
}


(4)总结

在整个菜单设计制作中,一般是通过以下方法使用Options Menu:

onCreateOptionsMenu(Menu menu)创建Options Menu,这个方法只会在menu第一次显示时调用;

onCreateOptionsMenu (Menu menu)更新改变Options Menu的内容,这个方法会在menu每次显示是调用;

onCreateOptionsMenu(MenuItem menu)处理选中的菜单项。

同时Context Menu在Activity里面,一般是通过以下方法使用Context Menu:

registerForContextMenu(View view)为某个view注册Context Menu,一般在Activity的onCreate里面调用;

onCreateContextMenu(ContextMenu menu,View v,ContextMenu.Context MenuInfo menuInfo)创建context menu和Options Menu不同,context meun每次显示时都会调用这个方法。

onContextItemSelected(MenuItem item)处理选中的菜单项 。

以上两种Menu都可以加入子菜单,但子菜单不能嵌套子菜单,这意味着在Android系统中菜单只有两层,同时子菜单不支持icon。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值