Android应用中,时常需要弹出临时的子菜单,如很多应用中,长按就会弹出一些子选项菜单。在此记录ListView的items长按弹出子菜单的步骤。
1、在menu包中新建xml文件,决定菜单的内容与次序
<item android:id="@+id/blakc_delete" android:title="恢复联系人" android:orderInCategory="100" app:showAsAction="never"/> <item android:id="@+id/black_info" android:title="查看详情" android:orderInCategory="99" app:showAsAction="never"/>
其中android:orderInCategory决定了子菜单item的顺序,数字小的出现在上面;如果item一样,就考虑它们在xml中的位置,写在上面的就出现在上面。
2、创建ListView的item长按触发事件
ListView list = (ListView) findViewById(R.id.black_list); list.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) { return true; } });
position表示是ListView中的第几个item被长按了。
3、创建子菜单并获取这个menu界面
PopupMenu popupMenu = new PopupMenu(BlackNumberInfo.this , view); getMenuInflater().inflate(R.menu.black_menu,popupMenu.getMenu());
4、创建子菜单的item点击事件,并用title来甄别点的是哪个item
public boolean onMenuItemClick(MenuItem item) { if(item.getTitle().equals("恢复联系人")){ listManagerDelete(position); Toast.makeText(BlackNumberInfo.this,"已恢复此联系人",Toast.LENGTH_SHORT).show(); } else if(item.getTitle().equals("查看详情")){ Toast.makeText(BlackNumberInfo.this,"我啥也不会做。。。",Toast.LENGTH_SHORT).show(); } return false; } });
5、一定要显示子菜单,不然啥都没有!!!
popupMenu.show();
以上