zoukankan      html  css  js  c++  java
  • 关于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();

    以上

  • 相关阅读:
    Java--Filter(过滤器)
    TP5.1验证Token和Electron-vue头部携带Token
    TP5.1让验证码在另外的项目(Electron-vue)里面使用
    Electron-vue请求携带cookie跨域问题
    Electron-vue在发送请求时携带cookie
    TP5.1解决跨域
    Electron-vue解决跨域
    Electron-vue运行之后出现了文件浏览器
    Electron-vue取消代码检查Eslint
    使用Composer安装TP5.1出现zsh: no matches found: 5.1.*
  • 原文地址:https://www.cnblogs.com/fishbone-lsy/p/4230354.html
Copyright © 2011-2022 走看看