2010-04-07 3 views
18

J'utilise un fichier XML pour créer un menu contextuel pour ma ListView. (S'il vous plaît voir ci-dessous). Je veux également définir un en-tête pour ce menu contextuel. J'ai lu (au http://www.mail-archive.com/[email protected]/msg43062.html) que je peux utiliser menu.setHeaderTitle (myContextMenuTitle) dans la méthode onCreateContextMenu. Mais je dois définir ceci dans le fichier XML. Comment puis-je accomplir cela?Comment créer un menu contextuel en utilisant un fichier XML?

code suivant est pour onCreateContextMenu méthode, corrigez-moi si je fais quelque chose de mal .. Ceci est mon fichier 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> 

Ceci est mon onCreateContextMenu Méthode:

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

Ceci est mon surCréer Méthode:

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

    registerForContextMenu(getListView()); 

    ... 
} 

Répondre

11

Vous devez le faire comme vous le faites actuellement.

+0

cela signifie-t-il que nous ne pouvons pas le faire par XML? – Vasu

+1

Oui. La seule façon de le faire est via menu.setHeader –

17

Vous pouvez appeler la méthode setHeaderTitle("mytitle") dans, objet de menu. Dans la méthode override, vous obtenez l'objet menu en tant que paramètre de la méthode OnCreateContextMenu. comme ceci:

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