Как создать диалог, который выглядит точно так же, как ContextMenu? - PullRequest
3 голосов
/ 05 августа 2011

Иногда не удобно использовать стандартные методы действий для создания ContextMenu (потому что в одном действии может быть много мест, но в разных классах, где было бы необходимо показать contextmenu).

Но созданиедиалоги легко из любого места.Как я могу создать диалог, который выглядит точно так же, как ContextMenu?Где найти макет стандартного контекстного меню или что-то в этом роде

Ответы [ 2 ]

6 голосов
/ 07 августа 2011

Я решил использовать AlertDialog s со списком (http://developer.android.com/guide/topics/ui/dialogs.html#AddingAList) вместо ContextMenu. Это похоже на ContextMenu (возможно, не совсем, из-за разных макетов), но оно более гибкое, потому что я могу выполнять различные действияу разных слушателей.

1 голос
/ 05 августа 2011

Вы можете найти MenuBuilder, ContextMenuBuilder и MenuDialogHelper полезными (см. код здесь ). В частности, 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 - это макет, который вы ищете. Его можно найти здесь . Этот макет представляет отдельный элемент в представлении списка контекстного меню.

...