android的上下文菜单项设计

计算机112 陈丹丹

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

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

一下代码实现了相应的功能:

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控件时,实现的效果如下:

 

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

 

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

posted @ 2013-05-08 14:55  陈丹丹(1131601201)  阅读(128)  评论(0)    收藏  举报