菜单和对话框
Android菜单有两种:
1、 选项菜单(OptionsMenu)
在Activity里面重写onCreateOptionsMenu(Menu menu)方法,然后有两种方式可以来添加菜单
⑴、直接在代码里面添加
public boolean onCreateOptionsMenu(Menu menu) { {// 代码添加菜单项 // add(int groupId, int itemId, int order, CharSequence title) // groupId:组ID; // itemId: itemID; // order:显示顺序 // title:菜单项的标题 menu.add(0, 0, 5, "添加").setIcon(android.R.drawable.ic_menu_add); menu.add(0, 1, 4, "电话").setIcon(android.R.drawable.ic_menu_call); menu.add(0, 2, 3, "删除").setIcon(android.R.drawable.ic_menu_delete); menu.add(1, 3, 2, "编辑").setIcon(android.R.drawable.ic_menu_edit); menu.add(1, 4, 1, "日期").setIcon(android.R.drawable.ic_menu_day); menu.add(1, 5, 0, "照相机").setIcon(android.R.drawable.ic_menu_camera); }
⑴、在XML文件里面写好然后用一个菜单映射映射到函数内部
XML文件如下:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/main_menu_item_1"
android:icon="@android:drawable/ic_menu_save"
android:title="保存"/>
<item
android:id="@+id/main_menu_item_2"
android:icon="@android:drawable/ic_menu_send"
android:title="发送"/>
<item
android:id="@+id/main_menu_item_3"
android:icon="@android:drawable/ic_menu_search"
android:title="查找"/>
<item
android:id="@+id/main_menu_item_4"
android:icon="@android:drawable/ic_menu_rotate"
android:title="旋转"/>
设置多选
<group android:checkableBehavior="all" >
<item
android:id="@+id/main_menu_item_5"
android:icon="@android:drawable/ic_menu_more"
android:title="更多1"/>
<item
android:id="@+id/main_menu_item_5"
android:icon="@android:drawable/ic_menu_more"
android:title="更多2"/>
<item
android:id="@+id/main_menu_item_5"
android:icon="@android:drawable/ic_menu_more"
android:title="更多3"/>
<item
android:id="@+id/main_menu_item_5"
android:icon="@android:drawable/ic_menu_more"
android:title="更多4"/>
</group>
</menu>
在函数内部把XML文件映射进来
@Override
public boolean onCreateOptionsMenu(Menu menu) {
{// xml添加菜单项
MenuInflater mif = this.getMenuInflater();
mif.inflate(R.menu.main_menu, menu);
}
return true;
}
处理选项菜单消息
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 0:
System.out.println("===代码添加的菜单项的<菜单项1>选中了");
break;
case 1:
System.out.println("===代码添加的菜单项的<菜单项2>选中了");
break;
case 2:
System.out.println("===代码添加的菜单项的<菜单项3>选中了");
break;
}
return true;
}
如果是用XML文件添加的菜单项则用ID号对消息进行处理
可以用系统菜单按钮打开菜单项,也可以自定义触发打开菜单项
openOptionsMenu();
1、 上下文菜单(ContextMenu)
创建和选项菜单一样有两种创建方式:自写和从XML文件加载
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
{// xml添加菜单项
MenuInflater mif = this.getMenuInflater();
mif.inflate(R.menu.main_menu, menu);
}
}
上下文菜单不能设置图标,对上下文菜单消息处理:
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.main_menu_item_1:
System.out.println("===xml添加的菜单项的<xmlMenuTitle1>选中了");
break;
case R.id.main_menu_item_2:
System.out.println("===xml添加的菜单项的<xmlMenuTitle2>选中了");
break;
case R.id.main_menu_item_3:
System.out.println("===xml添加的菜单项的<xmlMenuTitle3>选中了");
break;
}
return true;
}
上下文菜单用注册的方式来进行显示:
Button bt2 = (Button) findViewById(R.id.bt2); this.registerForContextMenu(bt2);
3.子菜单(Dialog)
触发子菜单显示的消息:
((Button) findViewById(R.id.bt1))
.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//根据这个ID号来判断显示的是哪一个Dialog
Android_09_03Activity2.this.showDialog(1);
}
});
}
真正的对话框创建是在这里完成的:
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case 1:
AlertDialog.Builder adb = new AlertDialog.Builder(this);
adb.setTitle("dialog的title")
// .setMessage("dialog的Message")
.setNeutralButton("中间按钮",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
dialog.dismiss();
}
})
.setPositiveButton("左确定",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
dialog.dismiss();
}
})
.setNegativeButton("右取消",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
dialog.dismiss();
}
})
// .setView(new EditText(Android_09_03Activity2.this))
.setIcon(android.R.drawable.ic_menu_help)
// .setSingleChoiceItems(
// new String[] { "item1", "item2", "item3", "item4" },
// 0, null);
// .setMultiChoiceItems(
// new String[] { "item1", "item2", "item3", "item4" },
// null, null);
.setItems(
new String[] { "item1", "item2", "item3", "item4" },
null);
adb.create().show();
break;
case 2:
break;
}
return null;
}
如上所述,在创建对话框的时候事件响应也都添加进去了。
浙公网安备 33010602011771号