关于PopupMenu的用法

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();

以上

原文地址:https://www.cnblogs.com/fishbone-lsy/p/4230354.html