Как реализовать контекстное меню по нажатию клавиши вместо долгого нажатия / нажатия - PullRequest
9 голосов
/ 05 июня 2010

У меня есть ListActivity, и я хочу реализовать контекстное меню для каждого из элементов списка. Я знаю, что обычный способ сделать это - показать контекстное меню при длинном нажатии / нажатии. Я хочу знать, есть ли способ показать контекстное меню для каждого элемента при нажатии клавиши (предпочтительно клавиша меню). Чтобы перефразировать мой вопрос, как я могу вызвать контекстное меню, а не меню параметров, нажав клавишу меню (или любую другую клавишу).

Ответы [ 2 ]

8 голосов
/ 06 июня 2010

Чтобы открыть контекстное меню, наберите openContextMenu(). Чтобы вызвать его с помощью клавиши, переопределите onKeyDown() или onKeyUp().

При этом я действительно не рекомендую этого.

Пользователи жалуются, что в Android нет стандартов пользовательского интерфейса. Вместо этого в Android есть соглашения по пользовательскому интерфейсу, которые предоставляют разработчикам некоторую свободу (и, что более важно, не являются препятствиями для включения вашего приложения в список Android Market).

Тем не менее, точка зрения этих пользователей очень верна - их опыт портится, когда приложения решают отключить тангенс пользовательского интерфейса. Решить, чтобы клавиша МЕНЮ выскочила из контекстного меню, было бы одним из таких касательных. Начнем с того, что на устройствах с сенсорным экраном это будет работать не очень хорошо, поскольку в вашем ListView нет выбранного элемента, поэтому пользователю будет неясно, к чему относится МЕНЮ.

Я подозреваю, что есть лучшее решение для любой проблемы, которую, по вашему мнению, вы решаете таким образом.

6 голосов
/ 06 июня 2010

Я фактически сделал то же самое для одного из моих приложений, потому что это имело смысл для моего приложения. Лучший и самый простой способ сделать это - переопределить onListItemClick () для вашего listActivity. Это лучше, чем onKeyDown (), поскольку оно относится конкретно к рассматриваемому элементу списка (представлению) и будет применяться только к элементам списка, а не к остальной части экрана.

onListItemClick(ListView l, View v, int position, long id)
{
   v.showContextMenu();
}

тогда все, что вам нужно сделать, переопределить методы контекстного меню, и вы золотые

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...