У меня есть ListActivity, и я хочу реализовать контекстное меню для каждого из элементов списка. Я знаю, что распространенный способ сделать это должно показать контекстное меню при длинном щелчке/касании. Я хочу знать, существует ли способ показать контекстное меню для каждого элемента на нажатии клавиши (предпочтительно клавиша меню). Перефразировать мой вопрос, как я могу инициировать контекстное меню а не меню параметров путем нажатия клавиши меню (или какой-либо другой ключ).
Чтобы открыть контекстное меню, вызовите openContextMenu ()
. Чтобы запустить его с помощью клавиши, переопределите onKeyDown ()
или onKeyUp ()
.
При этом я действительно не рекомендую этого.
Пользователи жалуются, что Android не имеет стандартов пользовательского интерфейса. Вместо этого в Android есть соглашения о пользовательском интерфейсе, которые предоставляют разработчикам некоторую свободу (и, что более важно, не препятствуют размещению вашего приложения на Android Market).
Тем не менее, точка зрения этих пользователей очень верна - их опыт портится, когда приложения решают уйти от касательной к пользовательскому интерфейсу. Одним из таких моментов было бы решение, чтобы клавиша MENU открывала контекстное меню. Во-первых, на устройствах с сенсорным экраном это не будет работать очень хорошо, потому что в вашем ListView
нет выбранного элемента, поэтому пользователю будет непонятно, к чему относится МЕНЮ.
Я подозреваю, что есть лучшее решение для любой проблемы, которую, по вашему мнению, вы решаете таким образом.
Я проделал то же самое для одного из своих приложений, потому что это имело смысл для моего приложения. Лучший и самый простой способ сделать это - переопределить onListItemClick () для вашего listActivity. Это лучше, чем onKeyDown (), потому что он относится конкретно к рассматриваемому элементу списка (представлению) и будет применяться только к элементам списка, а не к остальной части экрана.
onListItemClick(ListView l, View v, int position, long id)
{
v.showContextMenu();
}
, тогда все, что вам нужно сделать, переопределить методы контекстного меню, и вы золотой