2010-06-05 15 views
9

Tengo una actividad de lista y deseo implementar el menú contextual para cada uno de los elementos de la lista. Sé que la forma más común de hacerlo es mostrar el menú contextual al hacer clic/tocar largo. Quiero saber si hay una manera de mostrar el menú contextual de cada elemento al presionar una tecla (preferiblemente la tecla de menú). Para reformular mi pregunta, ¿cómo puedo activar el menú contextual y no el menú de opciones presionando la tecla de menú (o cualquier otra tecla).Cómo implementar el menú contextual al presionar la tecla en lugar de hacer clic/tocar prolongadamente

Respuesta

8

Para abrir el menú contextual, llame al openContextMenu(). Para activarlo mediante una tecla, anule onKeyDown() o onKeyUp().

Dicho esto, I realmente no lo recomiendo.

Los usuarios se quejan de que Android no tiene estándares de interfaz de usuario. En cambio, Android tiene convenciones de interfaz de usuario, que permiten cierta libertad a los desarrolladores (y, lo que es más importante, no son barreras para que su aplicación aparezca en el Android Market).

Sin embargo, el punto de esos usuarios es muy válido: su experiencia se ve afectada cuando las aplicaciones deciden ejecutar una tangente de UI. Decidir que la tecla MENÚ aparezca un menú contextual sería una de esas tangentes. Para empezar, en dispositivos de pantalla táctil, esto no funcionará muy bien, porque no hay ningún elemento seleccionado en su ListView, por lo que no sería claro para el usuario a qué se refiere el MENÚ.

Sospecho que hay una mejor solución para cualquier problema que piense que está resolviendo de esta manera.

+2

Estoy de acuerdo que es necesario que haya algunas convenciones habituales para los desarrolladores a seguir para hacer que la experiencia androide del consumidor más consistentes de una aplicación a otro. Sin embargo, para esta pregunta específica SÍ, creo que hay situaciones en las que es apropiado y lo he hecho yo mismo. – mtmurdock

+1

@mtmurdock: le invitamos a su opinión. El equipo principal de Android no parece compartirlo: http://developer.android.com/guide/practices/ui_guidelines/menu_design.html – CommonsWare

6

He hecho lo mismo para una de mis aplicaciones porque tiene sentido para mi aplicación. La mejor y más fácil forma de hacerlo es anular onListItemClick() para su listActivity. Esto es mejor que onKeyDown() porque pertenece específicamente al elemento de la lista (vista) en cuestión y solo se aplicará a los elementos de la lista, y no al resto de la pantalla.

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

entonces todo lo que tiene que hacer anular los métodos de menú de contexto y ya está de oro

Cuestiones relacionadas