安卓UI

PopupMenu基本使用

2019-04-01  本文已影响2人  NoBugException
(1)配置Item

我们可以在res中的menu文件夹中新建一个一个menu文件

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/next"
        android:icon="@mipmap/back"
        android:title="菜单一"/>

    <item
        android:id="@+id/add"
        android:icon="@mipmap/back"
        android:title="菜单二"/>

    <item
        android:id="@+id/detail"
        android:icon="@mipmap/back"
        android:title="菜单三"/>

    <item
        android:id="@+id/del"
        android:icon="@mipmap/back"
        android:title="菜单四"/>

</menu>
(2)使用PopupMenu
    // 这里的view代表popupMenu需要依附的view
    PopupMenu popupMenu = new PopupMenu(MainActivity.this, view);
    // 获取布局文件
    popupMenu.getMenuInflater().inflate(R.menu.popup_demo, popupMenu.getMenu());
    popupMenu.show();
    // 通过上面这几行代码,就可以把控件显示出来了
    popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
        @Override public boolean onMenuItemClick(MenuItem item) {
            // 控件每一个item的点击事件
            return true;
        }
    });
    popupMenu.setOnDismissListener(new PopupMenu.OnDismissListener() {
        @Override public void onDismiss(PopupMenu menu) {
            // 控件消失时的事件
        }
    });

加载menu配置,监听popup事件。

效果如下:

图片.png
(3)让图片展示

采用反射机制,让图片展示出来

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

效果如下:

图片.png
上一篇下一篇

猜你喜欢

热点阅读