Как создать контекстное меню по двойному клику? - PullRequest
0 голосов
/ 30 июня 2011

Мне нужно создать контекстное меню как по двойному клику, так и по долгому нажатию. Как это можно сделать?

Я имею в виду обычно onCreateContextMenu вызывается, когда пользователь нажимает долгое нажатие на виджет. В моем случае мне нужно сделать то же самое, когда пользователь дважды нажимает на виджет.

ДОБАВЛЕНО

Я знаю, что это не очень хороший вариант, поскольку он не является нормальным для пользовательского интерфейса Android. Но моя основная проблема заключается в устранении ошибок пользовательского интерфейса для устройств некоторых производителей, а именно HTC ( посмотрите этот пост ). Я, казалось бы, решил описанную проблему, но все же у меня есть проблемы с контекстными меню. Так что в крайнем случае я просто подумал, чтобы избежать двойного щелчка. Спасибо за понимание ...

1 Ответ

1 голос
/ 30 июня 2011

Насколько я понимаю, у вас есть контекстно-зависимые действия, которые вы хотите привязать к EditText, и изменения HTC в Android мешают этому.

Во-первых, я бы пересмотрел использование контекстных меню в целом,поскольку они не особенно доступны для обнаружения, поэтому большинство ваших пользователей их никогда не найдут.

Во-вторых, в случае EditText вероятность того, что двойное касание вызовет контекстное меню, приведет к тому, что пользователибудет на одном уровне с вероятностью того, что сегодня Земля получит удар по астероиду на уровне исчезновения.

:: смотрит в небо ::

Вместо двойного касания, один вариант будетпоставить маленький ImageButton рядом с EditText, с направленной вниз стрелкой (сродни Spinner), и связать это ImageButton с PopupMenu (идеально, но только API уровня 11), PopupWindow или AlertDialog.Или, в крайнем случае, у ImageButton отображается контекстное меню при нажатии с помощью showContextMenu().Это тоже нестандартный UX, но он, по крайней мере, более обнаружим, поскольку пользователи будут привыкать к тому, что при нажатии кнопок со стрелками вниз появляются сообщения как из Android, так и из других ОС.

Если вы абсолютно уверенычто вам нужно двойное касание, AFAIK, которое не является распознанным событием касания, поэтому вам придется самостоятельно обрабатывать события касания низкого уровня, определять, когда происходит двойное касание, и делать это так, чтобы это не мешалоиспользование EditText (например, установка позиции курсора).

...