以编程方式删除弹出菜单项

时间:2015-05-25 09:27:25

标签: android xml popupmenu

我正在我的应用程序中弹出一个弹出菜单。我已经创建了一个像下面这样的popmenu xml。

Song_popup xml

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

    <item
        android:id="@+id/add_queue"
        android:title="Add to queue" />
    <item
        android:id="@+id/play_next"
        android:title="Add to favourite" />
    <item
        android:id="@+id/add_download"
        android:title="Download" />


</menu>

现在我想通过检查条件来删除项目。我怎么能这样做?

代码

PopupMenu popup = new PopupMenu(activity, v);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.song_popup, popup.getMenu());
popup.show();

3 个答案:

答案 0 :(得分:10)

您可以删除菜单项,如下所示:

Menu m = popup.getMenu();
m.removeItem(m.findItem(R.id.add_queue));  //removes "Add to queue"

条件的实施完全取决于你。

这就是你可以处理菜单项点击的方法:

popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
    @Override
    public boolean onMenuItemClick(MenuItem menuItem) {
        if(menuItem.getItemId() == R.id.play_next){
            Toast.makeText(YourActivity.this, "Play_next", Toast.LENGTH_SHORT).show();
            return true;
        }
        return false;
    }
});

答案 1 :(得分:1)

除非我遗漏了某些东西,否则它应该像简单的那样简单:

if (doNotShowAddQueue) {
    final Menu menu = popup.getMenu();
    menu.removeItem(R.id.add_queue);
}

答案 2 :(得分:0)

你可以做得很简单。前 -

if (popup != null && yourcondition){
      MenuItem menuitem=    popup.getMenu().getItem(1);
      menuitem.setVisible(false);
    }