Android 如何使用 XML 文件创建上下文菜单?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/2592160/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-20 06:27:44  来源:igfitidea点击:

How to create Context Menu using XML file?

androidcontextmenu

提问by Vasu

I am using XML file for creating Context Menu for my ListView. (Please see below). I also want to set a header for this Context Menu. I read (at http://www.mail-archive.com/[email protected]/msg43062.html)that I can use menu.setHeaderTitle(myContextMenuTitle) in onCreateContextMenu Method. But I need to set this in XML file. How can I accomplish this?

我正在使用 XML 文件为我的 ListView 创建上下文菜单。(请参阅下文)。我还想为此上下文菜单设置标题。我读到(在http://www.mail-archive.com/[email protected]/msg43062.html)我可以在 onCreateContextMenu 方法中使用 menu.setHeaderTitle(myContextMenuTitle) 。但我需要在 XML 文件中设置它。我怎样才能做到这一点?

Following is code for onCreateContextMenu Method, correct me if I am doing anything wrong.. This is my context_menu.xml file:

以下是 onCreateContextMenu 方法的代码,如果我做错了什么,请纠正我.. 这是我的 context_menu.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/open" android:title="Open"/>
</menu>

This is my onCreateContextMenuMethod:

这是我的onCreateContextMenu方法:

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
    ContextMenuInfo menuInfo) {
  MenuInflater inflater = getMenuInflater();
  inflater.inflate(R.menu.context_menu, menu);
  super.onCreateContextMenu(menu, v, menuInfo);
 }

This is my onCreateMethod:

这是我的onCreate方法:

@Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  //  extras = getIntent().getExtras();

  registerForContextMenu(getListView());

  ...
 }

采纳答案by Robby Pond

You have to do it the way you are currently doing it.

你必须按照你目前的方式去做。

回答by Ashish Saini

You can call setHeaderTitle("mytitle")method in ,menu object . In override method you get menu object as paramrter of OnCreateContextMenumethod. like this:

您可以setHeaderTitle("mytitle")在 ,menu 对象中调用方法。在覆盖方法中,您将菜单对象作为OnCreateContextMenu方法的参数。像这样:

 @Override
 public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
   super.onCreateContextMenu(menu, v, menuInfo);
   menu.setHeaderIcon(R.drawable.icon);
   menu.setHeaderTitle("Share Menu.");
   MenuInflater inflater = getMenuInflater();

   inflater.inflate(R.menu.contextmenu, menu);
 }