【问题标题】:Create popup(or context) menu for menu item为菜单项创建弹出(或上下文)菜单
【发布时间】:2016-09-18 21:22:24
【问题描述】:

我想使用 Android 支持设计库中的菜单。当我长按它时,我想为该项目创建弹出或上下文菜单。 我已经尝试过this,但没有任何反应。我知道我可以在 Nav 项中使用自定义布局,但默认项看起来很不错,所以我想使用它们。

这是我的 menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <group android:checkableBehavior="single">
        <item
            android:title="SubMenuTitle">

            <menu>
            <group android:checkableBehavior="single">
                <item
                    android:id="@+id/myId"
                    android:icon="@drawable/ic_menu_camera"
                    android:title="SubMenuItem"
                    />
            </group>
            </menu>

        </item>
        <item
            android:id="@+id/nav_gallery"
            android:clickable="true"
            android:icon="@drawable/ic_menu_gallery"
            android:title="Gallery" />
        <item
            android:id="@+id/nav_slideshow"
            android:icon="@drawable/ic_menu_slideshow"
            android:title="Slideshow" />
        <item
            android:id="@+id/nav_manage"
            android:icon="@drawable/ic_menu_manage"
            android:title="Tools" />
    </group>

    <item android:title="Communicate">
        <menu>
            <item
                android:id="@+id/nav_share"
                android:icon="@drawable/ic_menu_share"
                android:title="Share" />
            <item
                android:id="@+id/nav_send"
                android:icon="@drawable/ic_menu_send"
                android:title="Send" />
        </menu>
    </item>

</menu>

还有一些代码

public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        //getMenuInflater().inflate(R.menu.activity_menu_drawer, menu);
        for(int i = 0; i < menu.size(); i++){
            View v = new View(this);
            registerForContextMenu(v);
            v.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    //Your longclick listener callback logic goes here
                    Log.d("dbg", "longClicked");
                    popup(v);
                    return false;
                }

            });
            menu.getItem(i).setActionView(v);
        }
        return true;
    }


private void popup(View v){
    PopupMenu pMenu = new PopupMenu(this, v);
    pMenu.inflate(R.menu.popup_menu);
    pMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener(){
        @Override
        public boolean onMenuItemClick(MenuItem item){
            Toast.makeText(MenuActivity.this, item.toString(), Toast.LENGTH_LONG).show();
            return true;
        }

    });
}

【问题讨论】:

    标签: android menu popup contextmenu


    【解决方案1】:

    你没有打电话给pMenu.show();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-15
      • 2017-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多