2011-08-05 63 views
3

有時使用standart活動方法創建ContextMenu不方便(因爲在一個活動中可能有很多地方,但是在需要顯示contextmenu的不同類中)。如何創建與ContextMenu完全相同的對話框?

但是,從任何地方創建對話框都很容易。 如何創建與ContextMenu完全相同的對話框?我在哪裏可以找到標準上下文菜單或類似的佈局?

回答

6

我決定使用AlertDialog與列表(http://developer.android.com/guide/topics/ui/dialogs.html#AddingAList)而不是ContextMenu。它看起來像ContextMenu(也許,不完全是因爲不同的佈局),但它更靈活,因爲我可以在不同的監聽器中處理不同的操作。

1

你可以找到MenuBuilder,ContextMenuBuilderMenuDialogHelper有用(見code here)。特別是,MenuDialogHelper是您嘗試實現的最接近的東西。

注重下一菜單類型:

/** 
* The menu type that represents a menu dialog. Examples are context and sub 
* menus. This menu type will not have a corresponding MenuView, but it will 
* have an ItemView. 
*/ 
public static final int TYPE_DIALOG = 2; 

本線組合:

// Order must be the same order as the TYPE_* 
static final int ITEM_LAYOUT_RES_FOR_TYPE[] = new int[] { 
    com.android.internal.R.layout.icon_menu_item_layout, 
    com.android.internal.R.layout.list_menu_item_layout, 
    com.android.internal.R.layout.list_menu_item_layout, 
}; 

它清楚地表明list_menu_item_layout是你正在尋找的佈局。它可以發現here。此佈局表示上下文菜單列表視圖中的單個項目。

+0

非常感謝您的回答!但它不是公共API(是嗎?),我只能複製這個佈局,並希望它的系統副本不會在以後更改,對吧? –

+0

所以也許最好不要使用上下文菜單,而是顯示標準對話框而不是它。這將是更靈活的決定。 –

+0

是的,你是對的。它們是私人的,如果任何Android供應商定製上下文菜單的外觀,您的應用程序將會看起來不同。但是,如果您只想讓這些菜單在您自己的應用程序活動中保持一致,那麼是的 - 在所有情況下只使用自定義對話框而不使用上下文菜單。 – inazaruk

相關問題