Android PopupWindow 的使用

2018-09-28  本文已影响8人  Ello_Orld

如果要求弹出的PopupWindow里面是一个列表,我们使用时都是在里面套个ListView或RecyclerView ,现在我们不需要在做这样繁琐的工作了。
在官方android.support.v7.widget 包下提供的 PopupMenu 组件。

PopupMenu,弹出菜单,一个模态形式展示的弹出风格的菜单,绑在在某个View上,一般出现在被绑定的View的下方(如果下方有空间)。

使用方法:

  1. 新建menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/menu1"
        android:title="菜单1" />
    <item
        android:id="@+id/menu2"
        android:title="菜单2" />
    <item
        android:id="@+id/menu3"
        android:title="菜单3" />
</menu>
    PopupMenu popupMenu;

    private void showPopMenu() {
        if (popupMenu == null) {
            popupMenu = new PopupMenu(ParentFrm, menu_more);
            popupMenu.getMenuInflater().inflate(R.menu.reset_menu, popupMenu.getMenu());
            popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    switch (item.getItemId()) {
                        case R.id.menu1:
                            // TODO: 2018/9/28  
                            break;
                        default:
                            break;
                    }
                    return true;
                }
            });
        }
        popupMenu.show();
    }

3.如果需要显示图标的话:
以前用到带图标的菜单时,一般都是通过自定义 PopupWindow 来实现的,比较麻烦,其实 PopupMenu 可以很简单的实现这个功能,不过需要用到反射。关于反射,我理解的不深,所以下面的代码也是从网上粘贴过来的。细心的同学可能会发现,在 xml 资源文件中,我在每个 item 标签里都写了 icon 的属性。没错,要显示的正是在这里设置的图片。当然,如果你不需要显示图标的话,icon 是没有必要写的。

try {
            Field field = popupMenu.getClass().getDeclaredField("mPopup");
            field.setAccessible(true);
            MenuPopupHelper helper = (MenuPopupHelper) field.get(popupMenu);
            helper.setForceShowIcon(true);
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
20180928_214335.png

参考链接:https://www.jianshu.com/p/60a34a4d52bd

上一篇 下一篇

猜你喜欢

热点阅读