以编程方式删除弹出菜单项
remove popup menu item programmatically
我正在我的应用程序中扩充弹出菜单。我创建了一个如下所示的弹出菜单 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();
您可以删除菜单项,如下所示:
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;
}
});
除非我遗漏了什么,它应该像例如:
一样简单
if (doNotShowAddQueue) {
final Menu menu = popup.getMenu();
menu.removeItem(R.id.add_queue);
}
你可以很简单地做到。前
if (popup != null && yourcondition){
MenuItem menuitem= popup.getMenu().getItem(1);
menuitem.setVisible(false);
}
我正在我的应用程序中扩充弹出菜单。我创建了一个如下所示的弹出菜单 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();
您可以删除菜单项,如下所示:
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;
}
});
除非我遗漏了什么,它应该像例如:
一样简单if (doNotShowAddQueue) {
final Menu menu = popup.getMenu();
menu.removeItem(R.id.add_queue);
}
你可以很简单地做到。前
if (popup != null && yourcondition){
MenuItem menuitem= popup.getMenu().getItem(1);
menuitem.setVisible(false);
}