有時使用standart活動方法創建ContextMenu不方便(因爲在一個活動中可能有很多地方,但是在需要顯示contextmenu的不同類中)。如何創建與ContextMenu完全相同的對話框?
但是,從任何地方創建對話框都很容易。 如何創建與ContextMenu完全相同的對話框?我在哪裏可以找到標準上下文菜單或類似的佈局?
有時使用standart活動方法創建ContextMenu不方便(因爲在一個活動中可能有很多地方,但是在需要顯示contextmenu的不同類中)。如何創建與ContextMenu完全相同的對話框?
但是,從任何地方創建對話框都很容易。 如何創建與ContextMenu完全相同的對話框?我在哪裏可以找到標準上下文菜單或類似的佈局?
我決定使用AlertDialog
與列表(http://developer.android.com/guide/topics/ui/dialogs.html#AddingAList)而不是ContextMenu
。它看起來像ContextMenu(也許,不完全是因爲不同的佈局),但它更靈活,因爲我可以在不同的監聽器中處理不同的操作。
你可以找到MenuBuilder
,ContextMenuBuilder
和MenuDialogHelper
有用(見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。此佈局表示上下文菜單列表視圖中的單個項目。
非常感謝您的回答!但它不是公共API(是嗎?),我只能複製這個佈局,並希望它的系統副本不會在以後更改,對吧? –
所以也許最好不要使用上下文菜單,而是顯示標準對話框而不是它。這將是更靈活的決定。 –
是的,你是對的。它們是私人的,如果任何Android供應商定製上下文菜單的外觀,您的應用程序將會看起來不同。但是,如果您只想讓這些菜單在您自己的應用程序活動中保持一致,那麼是的 - 在所有情況下只使用自定義對話框而不使用上下文菜單。 – inazaruk