2010-04-07 2 views
18

Tôi đang sử dụng tệp XML để tạo Menu ngữ cảnh cho ListView của mình. (Vui lòng xem bên dưới). Tôi cũng muốn đặt tiêu đề cho Menu ngữ cảnh này. Tôi đọc (tại http://www.mail-archive.com/[email protected]/msg43062.html) mà tôi có thể sử dụng menu.setHeaderTitle (myContextMenuTitle) trong phương thức onCreateContextMenu. Nhưng tôi cần phải thiết lập điều này trong tập tin XML. Làm thế nào tôi có thể thực hiện điều này?Làm cách nào để tạo Menu ngữ cảnh bằng tệp XML?

Sau đây là mã cho onCreateContextMenu Phương pháp, chính xác cho tôi nếu tôi làm điều gì sai trái .. Đây là tập tin context_menu.xml tôi:

<?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> 

Đây là tôi onCreateContextMenu Phương pháp:

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

Đây là số trênCreate Phương thức:

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

    registerForContextMenu(getListView()); 

    ... 
} 

Trả lời

11

Bạn phải thực hiện theo cách bạn hiện đang thực hiện.

+0

điều này có nghĩa là chúng tôi không thể thực hiện điều đó thông qua XML? – Vasu

+1

Có. Chỉ có cách để làm điều đó là thông qua menu.setHeader –

17

Bạn có thể gọi phương thức setHeaderTitle("mytitle") trong đối tượng menu. Trong phương pháp ghi đè, bạn nhận đối tượng trình đơn làm tham số của phương thức OnCreateContextMenu. như sau:

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