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

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

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


浙公网安备 33010602011771号