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

18

我正在使用XML文件为我的ListView创建上下文菜单(请参见以下代码)。我还想设置此上下文菜单的标题。我在这里读到,我可以在onCreateContextMenu方法中使用menu.setHeaderTitle(myContextMenuTitle)。但是我需要在XML文件中设置它。我该如何实现?

以下是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>

这是我的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);
 }

这是我的onCreate方法:

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

  registerForContextMenu(getListView());

  ...
 }
2个回答

18

你可以在菜单对象中调用 setHeaderTitle("mytitle") 方法。 在重写方法中,你可以将菜单对象作为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);
 }     

10

你必须按照目前的方式进行。


这是否意味着我们不能通过XML来实现它? - Vasu
1
是的。唯一的方法是通过 menu.setHeader。 - Robby Pond

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接