Si una pantalla muestra más de un elemento interactivo en la misma ubicación, puede resultar difícil para un usuario interactuar con la aplicación. También se hace complicado para algunos servicios de accesibilidad, como Accesibilidad con interruptores, representar claramente de cara al usuario los elementos para los que se deben tomar medidas.
Implementación
ViewAl implementar OnClickListeners
y OnLongClickListeners
, debes comprobar si la clase View
en la que se puede hacer clic incluye un antecedente o un descendiente en los que también se puede hacer clic y que comparten la misma ubicación en pantalla. En una interfaz de usuario implementada correctamente, los elementos en los que se puede hacer clic se muestran por separado.
Ten en cuenta la siguiente información al implementar clases View
en las que se puede hacer clic:
- Ciertos tipos de clases
View
(comoButton
) se representan de forma predeterminada como elementos en los que se puede hacer clic. Si en tu aplicación no es posible hacer clic en la claseView
o esta no realiza ninguna acción cuando se hace clic en ella, elimina su interfazOnClickListener
o estableceandroid:clickable="false"
. De esta forma, indicas a los servicios de accesibilidad que deben considerar la claseView
como un elemento en el que no se puede hacer clic. - En interfaces de usuario más complejas, es posible que varias clases
View
en las que se puede hacer clic tengan relaciones superiores o secundarias en la jerarquía de vistas. En aquellos casos donde las clasesView
en las que se puede hacer clic estén anidadas, debes implementar la gestión de clics para que solo una claseView
se encargue de los clics de cualquier acción individual.
Cuando implementes las propiedades onClick
u onLongClick
de Modifier.clickable
o de Modifier.combinedClickable
, comprueba si el componible tiene un antecedente o un descendiente en los que se pueda hacer clic y que compartan la misma ubicación en pantalla. En una interfaz de usuario implementada correctamente, los elementos en los que se puede hacer clic se muestran por separado.
- Ciertos componibles de bajo nivel, como
Button
, tienen semánticas en las que se puede hacer clic de forma predeterminada. En tu aplicación, si no se puede hacer clic en el componible o este no realiza ninguna acción cuando se hace clic en él, elimina la semántica en la que se puede hacer clic conModifier.clearAndSetSemantics
. - En interfaces de usuario más complejas, es posible que varios componibles en los que se puede hacer clic tengan relaciones superiores o secundarias en la jerarquía de vistas.
- En aquellos casos donde los componibles en los que se puede hacer clic estén anidados, debes implementar la gestión de clics para que solo un componible en una relación superior o secundaria se encargue de los clics de cualquier acción individual.
Diseño
El objetivo de cada elemento en el que se puede hacer clic debe ser claro y el usuario debe poder anticipar de forma razonable la acción que se va a realizar al hacer clic o al mantener pulsado un elemento. Además, los elementos para los que se deben tomar medidas tienen que ser de un tamaño adecuado para áreas táctiles.
Pruebas
Sigue estos pasos para verificar manualmente que la interfaz de usuario de una aplicación no incluye elementos duplicados en los que se puede hacer clic:
- Activa Accesibilidad con interruptores para Android y configura la búsqueda por pasos con dos interruptores.
- Abre la aplicación.
- Utiliza el interruptor que se ha asignado a la acción "Siguiente" para mover el enfoque de Accesibilidad con interruptores de un elemento a otro de la interfaz.
- Si algún elemento aparece enfocado más de una vez, es posible que la interfaz incluya elementos duplicados en los que se puede hacer clic.
Las herramientas de prueba automáticas de Android pueden detectar las clases View
duplicadas en las que se puede hacer clic. Te recomendamos que utilices Test de Accesibilidad para Android para probar tu aplicación manualmente en el dispositivo. Si quieres realizar pruebas automáticas, activa las comprobaciones de accesibilidad en Espresso y Robolectric.