options menu最多只能在屏幕最下面显示6个菜单选项,成为icon menu,icon menu不能有checkable选项。多余6的会以more icon menu来调出,成为expanded menu。options menu通过activity的onCreateOptionsMenu来生成,只会在menu第一次生成时调用。任何想改变options menu的想法只能在onPrepareOptionsMenu来实现,这个函数会在menu显示前调用。onOptionsItemSelected 处理选中的菜单项。
context menu是跟某个具体的view绑定在一起,在activity调用registerForContextMenu来为某个view注册context menu。context menu在显示前都会调用onCreateContextMenu来生成menu。onContextItemSelected选中的菜单项。
android还提供了对菜单项进行分组的功能,可以把相似功能的菜单项分成同一个组,这样就可以通过调用setGroupCheckable,setGroupEnabled,setGroupVisible来设置菜单属性,而无须单独设置。
响应菜单项单击事件
3种方式
menuOptionsSelected
menuItemSelected
onMenuItemClick
动态添加、修改和删除菜单项
菜单项的增删改查
增:add:添加菜单项
addSubMenu:表示向这个菜单项中添加子菜单项
删:removeItem:删除指定的那个菜单项
removeGroup:删除指定的某组菜单项
改:
选项菜单:onPrepareOptionsMenu()——> MenuItem->setXXX()
上下文菜单:onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {} 方法在每次调用上下文菜单时都会被调用一次
子菜单的创建
Xml创建
Menu.getMenuInflater ().inflater(R.menu.submenu, submenu);
动态创建
Menu submenu = Menu.addSubMenu(x, x, x, x)
submenu.add()
submenu.add()
main_menu.addSubMenu(x,x,x,x);
带单选或复选的子菜单
SubMenu submenu = menu.addSubMenu(组号,添加的菜单项 , 在该组中的放置位置,显示的菜单名);
submenu.setGroupCheckable(组号,是否可选,是否为单选);
sb.getItem(0).setCheckable(设置是否可选);
sb.getItem(0).setChecked(设置是否默认选中);
AlertDialog的常见方法
创建AlertDialog对象的方法:
创建一个AlertDialog的Builder对象,利用该Builder对象可使用多个方法,分别用于设定对话框的标题,信息,按钮等
AlertDialog.Builder builder = new Builder(类名);
builder.setTitle(标题):设置对话框的标题
builder.setMessage(对话框信息):设置对话框显示信息
setItems(int itemsld,DialogInterface.OnclickListener listener):创建普通列表对话框
setMultiChoiceItems(CharSequence[] items,Boolean[] checkedItems,DialogInterface.OnMulti ChoiceClickListener listener):创建多选列表对话框
setSingleChoiceItems(CharSequence[] items,int checkedItem,DialogInterface.OnMulti ChoiceClickListener listener):创建单选列表对话框
setAdapter(ListAdapter adapter,DialogInterface.OnClickListener listener):创建根据ListAdapter提供列表项的列表对话框
builder.setPositiveButton(按钮名, 监听器及其方法()):创建AlertDialog的按钮
AlertDialog的监听器方法
public void onClick(DialogInterface dialog, int which)该Dialog的监听器方法,监听所有的dialog对象,并且对它们进行排号
切记:
使用dialog时一定要记得调用builder.create().show();方法,否则,该AlertDialog会不显示
一个AlertDialog的实例方法:
AlertDialog.Builder builder = new Builder(RActivity.this);
builder.setTitle("导入/导出联系人");
builder.setItems(new String[] { sub5_01, sub5_02, sub5_03, sub5_04 },
new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
// 注册使用对话框里的监听器
builder.setNegativeButton("取消",
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
});
// 注册显示系统对话框
builder.create().show();