Как реализовать контекстное меню на нажатии клавиши вместо длинного щелчка/касания

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

10
задан Tushar Gupta 5 June 2010 в 19:01
поделиться

2 ответа

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

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

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

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

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

8
ответ дан 3 December 2019 в 22:35
поделиться

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

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

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

7
ответ дан 3 December 2019 в 22:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: