ContextMenu
android的context menu上下文菜单,选择某项VIEW后长按menu键,就会显示出来。 SDK上的描述:Context Menu A floating list of menu items that appears when the user performs a long-press on a View.
使用步骤
ContextMenu的使用也比较简单和OptionsMenu相似,先添加XML文件,然后重载对应的方法成员。
首先在res文件夹下新建menu目录,然后往里面添加menu的XML 文件。OptionsMenu 和 ContextMenu格式的是一样的。
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/deleteTeam" android:title="@string/delete" android:icon="@android:drawable/ic_menu_delete"/> </menu>
item:每一个item对应一项菜单。
android:icon:用于指定菜单显示的图标。
android:title:菜单的标题,显示在图标下面。
关于Menu的更多属性设置请查看SDK上的 Menu
Resource。
Resource。
第二步是重写 onCreateContextMenu方法。
代码 @Override publicvoid onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); MenuInflater inflater=getMenuInflater(); inflater.inflate(R.menu.meetings_context_menu, menu); }
接下来是处理菜单的点击事件
代码 @Override publicboolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item .getMenuInfo(); switch (item.getItemId()) { case R.id.delete_meeting: postionOfMeetingToDelete = info.position; showDialog(CONFIRM_DELETE_MEETING_DIALOG); returntrue; default: returnsuper.onContextItemSelected(item); } }
这里我们使用AdapterContextMenuInfo 来获取上下文菜单 获取对应VIEW 的信息。.position 在这里返回了ListActivity中的位置,
The position in the adapter for which the context menu is being displayed.
注册菜单
ContextMenu和OptionsMenu主菜单不同的是上下文菜单需要使用registerForContextMenu进行注册,否则将无法显示。
代码 @Override protectedvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.teams); //将右键菜单注册给List 控件 registerForContextMenu(getListView()); }