Android控件<第二十篇>:PopupMenu基本使用

(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配置,監(jiān)聽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
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容