Android菜单项设计

计算机应用112班  孔秋静

菜单设计

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)以下代码实现了相应的功能:

package com.cqvie;

import android.app.Activity;

import android.app.AlertDialog;

import android.os.Bundle;

import android.view.ContextMenu;

import android.view.ContextMenu.ContextMenuInfo;

import android.view.Menu;

import android.view.MenuItem;

import android.view.SubMenu;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.TextView;

public class MenuActivity extends Activity {

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        EditText t2=(EditText) findViewById(R.id.t2);

        this.registerForContextMenu(t2);

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

        this.registerForContextMenu(b1);

    }

    @Override

    public boolean onCreateOptionsMenu(Menu menu){ 

       // 一个menu可以包括多个子菜单

        SubMenu subMenu = menu.addSubMenu("系统设置");

        subMenu.add(1, 1, 1, "显示设置");

        subMenu.add(1, 2, 2, "网络设置");

        subMenu.add(1, 3, 3, "高级设置");

        subMenu.add(1, 4, 4, "安全设置");

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

        subMenu2.add(1, 1, 1, "打开");

        subMenu2.add(1, 2, 2, "保存");

        subMenu2.add(1, 3, 3, "另存为");

             return true;

    }

// @Override

// public boolean onOptionsItemSelected(MenuItem item) {

 // TODO Auto-generated method stub

//  int id=item.getItemId();

//  TextView t1=(TextView) findViewById(R.id.t1);

//  t1.setText(id+"");

//  return super.onOptionsItemSelected(item);

// }

 @Override  public void onCreateContextMenu(ContextMenu menu, View v,    ContextMenuInfo menuInfo) {

//  ContextMenu 上下文菜单

  // TODO Auto-generated method stub

//  super.onCreateContextMenu(menu, v, menuInfo);

//     Log.v(TAG, "populate context menu");  

    // set context menu title   menu.clear();

//清空原有菜单项

  if(v.getId()==R.id.t2)   {

         menu.setHeaderTitle("文件操作");

         menu.add(0, 1, Menu.NONE, "发送");

         menu.add(0, 2, Menu.NONE, "标记为重要");

         menu.add(0, 3, Menu.NONE, "重命名");

         menu.add(0, 4, Menu.NONE, "删除");

  }  

 else if(v.getId()==R.id.b1)   {

   menu.setHeaderTitle("文件");

      menu.add(0, 1, Menu.NONE, "aaa");

      menu.add(0, 2, Menu.NONE, "bbb");

      menu.add(0, 3, Menu.NONE, "ccc");

      menu.add(0, 4, Menu.NONE, "ddd");

  }  

}  

  }

以上代码最开始的效果如下:

当用户长按文本框控件时,实现的效果如下:

当用户长按按钮控件时,实现的效果如下:

 

当用户按MENU控件时,实现的效果如下:

 

当用户点系统用户时,实现的效果如下:

 

当用户点文件时,实现的效果如下:

 (4) 总结

    在整个菜单设计制作中

    我了解到了Options Menu在Activity里面,一般是通过以下方法使用Options Menu:

  1. onCreateOptionsMenu(Menu menu)创建Options Menu,这个方法只会在menu第一次显示时调用;
  2. onCreateOptionsMenu (Menu menu)更新改变Options Menu的内容,这个方法会在menu每次显示是调用;
  3. onCreateOptionsMenu(MenuItem menu)处理选中的菜单项。 

同时我了解到了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 meun每次显示时都会调用这个方法。
  3. onContextItemSelected(MenuItem item)处理选中的菜单项 。

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

posted on 2013-05-20 17:32  孔秋静(1131601213)  阅读(145)  评论(0编辑  收藏  举报

导航