2010-04-07 34 views
18

Estoy usando un archivo XML para crear un menú contextual para mi ListView. (Por favor ver más abajo). También quiero establecer un encabezado para este menú contextual. Leí (al http://www.mail-archive.com/[email protected]/msg43062.html) que puedo usar menu.setHeaderTitle (myContextMenuTitle) en el método onCreateContextMenu. Pero necesito configurar esto en un archivo XML. ¿Cómo puedo lograr esto?¿Cómo crear un menú contextual usando un archivo XML?

siguiente es código para onCreateContextMenu Método, me corrija si estoy haciendo algo mal .. Este es mi archivo 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> 

Ésta es mi onCreateContextMenu Método:

@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); 
} 

Este es mi onCreate Método:

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

    registerForContextMenu(getListView()); 

    ... 
} 

Respuesta

11

Tienes que hacerlo de la forma en que lo estás haciendo actualmente.

+0

¿significa esto que no podemos hacerlo a través de XML? – Vasu

+1

Sí. La única forma de hacerlo es a través de menu.setHeader –

17

Puede llamar al método setHeaderTitle("mytitle") en, objeto del menú. En el método de anulación, obtienes el objeto de menú como parámetro del método OnCreateContextMenu. como este:

@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); 
}  
Cuestiones relacionadas