Android之Menu
OptionMenu
普通的菜单,既点击menu按钮的时候。
点击更多操作:
两种写法:
1.
@Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); int i = 1 ; //添加菜单项 MenuItem call = menu.add(Menu.NONE,i++,Menu.NONE,"呼叫"); call.setIcon(R.drawable.icon); MenuItem send = menu.add(Menu.NONE,i++,Menu.NONE,"发送短信"); send.setIcon(R.drawable.icon); int groupId = 1; menu.add(groupId,i++,Menu.NONE,"删除联系人"); menu.add(groupId,i++,Menu.NONE,"复制联系人"); //添加子菜单 SubMenu more = menu.addSubMenu(groupId,i++,Menu.NONE,"更多操作"); more.setIcon(R.drawable.icon); more.add(groupId,i++,Menu.NONE,"新建联系人"); more.add(groupId,i++,Menu.NONE,"删除所有联系人"); more.add(groupId,i++,Menu.NONE,"导入联系人"); //通过xml,来配置菜单项。 //new MenuInflater(getApplication()).inflate(R.menu.two916menu, menu); return true; }
2,通过xml来配置:
使用如下语句可以配置:
new MenuInflater(getApplication()).inflate(R.menu.two916menu, menu);
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:orderInCategory="1" android:titleCondensed="呼叫" android:id="@+id/contect_call" android:icon="@drawable/icon"> </item> <item android:orderInCategory="2" android:titleCondensed="发送短信" android:id="@+id/contect_send_mms" android:icon="@drawable/icon"> </item> <group android:enabled="true" android:visible="true" android:checkableBehavior="all" android:id="@+id/withcontect" android:orderInCategory="1" android:menuCategory="container"> <item android:orderInCategory="3" android:titleCondensed="删除联系人" android:id="@+id/contect_delete_contect" android:menuCategory="container" /> <item android:orderInCategory="4" android:titleCondensed="复制联系人" android:id="@+id/contect_copy_contect" android:menuCategory="container" /> <item android:orderInCategory="5" android:title="更多操作" android:icon="@drawable/icon" android:id="@+id/other_operator"> <menu> <item android:orderInCategory="1" android:id="@+id/contect_new_contect" android:title="新增联系人" /> <item android:orderInCategory="2" android:id="@+id/contect_delete_all_contect" android:title="删除所有联系人" /> <item android:orderInCategory="3" android:id="@+id/contect_import_contect" android:title="导入联系人" /> </menu> </item> </group> </menu>
ContextMenu
给ListView 的Item 注册菜单ContextMenu.当长按ListView的Item时弹出的菜单。
先来看下效果图:
实现代码如下:
listView = (ListView) findViewById(R.id.two916_listview); String[] mString = new String[] { "程伟 滨江", "骆丽君 鄞州", "张高飞 鄞州", "陈丽丽 鄞州", "吴龙春 鄞州", "黄春光 鄞州", "王旭君 萧山", "李津 滨江", "蒋丰明 西湖", "黄婷婷 鄞州" }; listView.setAdapter(new ArrayAdapter<String>(Two916Activity.this, android.R.layout.simple_list_item_1, mString)); //给ListView添加ContextMenuListener listView.setOnCreateContextMenuListener(new OnCreateContextMenuListener() { @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { // 设置标题 menu.setHeaderTitle("用户信息"); int i = 1; // 添加菜单项 menu.add(0, i++, 0, "修改姓名"); menu.add(0, i++, 0, "修改号码"); menu.add(0, i++, 0, "删除"); menu.add(0, i++, 0, "设置来电头像"); menu.add(0, i++, 0, "设置来电铃声"); } });