计应112 贺利琴
Android中的菜单有两种:一种是通过主界面的MENU键激活,叫Menu;另一种是当用户长按一个元素时激活,叫Context Menu。Context Menu用于View,跟某个具体的View绑定在一起。
例如:实现当用户长按某一个控件时,弹出相应的菜单。实现代码及相应的窗体界面如下:
package com.menu;
import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
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 t1=(EditText)findViewById(R.id.t1);
this.registerForContextMenu(t1);
Button b1=(Button)findViewById(R.id.b1);
this.registerForContextMenu(b1);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
//Log.v(TAG, "populate context menu");
// set context menu title
if(v.getId()==R.id.t1)
{
menu.clear();//清空原有菜单项
menu.setHeaderTitle("文件操作");
// add context menu item
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.add(0,1,Menu.NONE,"aaa");
menu.add(0,2,Menu.NONE,"ccc");
menu.add(0,3,Menu.NONE,"saa");
}
}
}
初始效果图如下: 长按文本框控件的效果图如下: 长按Button控件的效果图如下: