[英]How to create Popup Menu in Context Menu?
我想为上下文菜单创建一个弹出菜单,以便当我长按上下文菜单时,它会显示另一个弹出菜单。
这是我为上下文菜单编写的代码
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val button = findViewById<Button>(R.id.btn)
registerForContextMenu(button)
}
override fun onCreateContextMenu(menu: ContextMenu?, v: View?, menuInfo: ContextMenu.ContextMenuInfo?) {
super.onCreateContextMenu(menu, v, menuInfo)
menu?.setHeaderTitle("Choose one")
menu?.add(0, v?.getId()!!, 0, "Upload")
menu?.add(0, v?.getId()!!, 0, "Search")
menu?.add(0, v?.getId()!!, 0, "Share")
}
override fun onContextItemSelected(item: MenuItem): Boolean {
return super.onContextItemSelected(item)
}
在 Java 中,当我长按按钮时会显示上下文菜单,然后我选择上下文菜单时会显示弹出菜单。
Button button = findViewById(R.id.button);
registerForContextMenu(button);
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("Context Menu");
menu.add(0, v.getId(), 0, "Upload");
menu.add(0, v.getId(), 0, "Search");
menu.add(0, v.getId(), 0, "Share");
menu.add(0, v.getId(), 0, "Bookmark");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
super.onContextItemSelected(item);
try {
showPopup(findViewById(item.getItemId()));
} catch (Exception e) {
e.printStackTrace();
}
return true;
}
private void showPopup(View anchorView) {
PopupMenu popup = new PopupMenu(this, anchorView);
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Toast.makeText(MapsActivity.this, "Selected Item: "
+ item.getTitle(), Toast.LENGTH_SHORT).show();
return true;
}
});
popup.inflate(R.menu.menu_example);
popup.show();
}
您可能希望使用addSubMenu()方法将 SubMenu 对象添加到您的菜单中。 如果您想更多地了解菜单创建内容,这里是创建菜单的参考。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.