Además de los métodos de entrada de software, como teclados: Android admite teclados físicos conectados al dispositivo. R ofrece un modo conveniente para ingresar texto y permite que los usuarios navegar e interactuar con tu app. Aunque la mayoría de los dispositivos de mano, como los teléfonos usan el tacto como modo principal de interacción, las tablets y otros son populares, y a muchos usuarios les gusta colocarles accesorios de ellos.
Dado que cada vez más dispositivos con Android ofrecen este tipo de experiencia, es importante que optimices tu app para que admita la interacción a través de un teclado. Esta describe cómo puedes mejorar la navegación con un teclado.
Prueba tu app
Es posible que los usuarios ya puedan navegar por tu app con un teclado el sistema Android habilita la mayoría de los comportamientos necesarios de forma predeterminada.
Todos los widgets interactivos proporcionados por el framework de Android, como
Button
y
EditText
— son
enfocable. Esto significa que los usuarios pueden navegar con dispositivos de control, como un pad direccional o
teclado y cada widget se ilumina o cambia su apariencia cuando
consigue el foco en la entrada.
Para probar tu app, realiza el siguiente procedimiento:
- Instala tu app en un dispositivo que ofrezca un teclado de hardware.
Si no tienes un dispositivo de hardware con un teclado, conecta un Bluetooth o un teclado USB.
También puedes hacer lo siguiente para usar Android Emulator:
- En el Administrador de AVD, haz clic en New Device o selecciona un perfil existente y haz clic en Clonar.
- En la ventana que aparece, asegúrate de que las opciones de Teclado y Dpad habilitado.
- Para probar tu app, usa solo la tecla Tab para navegar por tu
de la IU de Google. Asegúrate de que cada control de la IU tenga el enfoque esperado.
Busca cualquier instancia en la cual el foco se mueva en una forma.
- Vuelve a empezar desde el principio de la app y navega por la IU.
mediante controles de dirección, como las teclas de flecha en el teclado. Desde cada
enfocable en tu IU, presiona Arriba, Abajo,
Izquierda y Derecha.
Busca cualquier instancia en la cual el foco se mueva en una forma.
Si encuentras instancias en las que navegas con la tecla Tab o controles de dirección no hacen lo que esperas, especifica dónde debe estar en tu diseño, como se explica en las siguientes secciones.
Cómo controlar la navegación de pestañas
Cuando un usuario navega por tu app con la tecla Tab del teclado, la el sistema pasa el foco de entrada entre los elementos según el orden en el que en el diseño. Si usas un diseño relativo, por ejemplo, y el orden de los elementos en la pantalla es diferente del orden del archivo, entonces quizás deba especificar manualmente el orden del enfoque.
Por ejemplo, en el siguiente diseño, dos botones están alineados a la derecha
y hay un campo de texto alineado a la izquierda del segundo botón. Para aprobar
el enfoque del primer botón al campo de texto y luego al segundo botón, los
el diseño debe definir explícitamente el orden del foco para cada uno de los objetos
de los elementos con el
android:nextFocusForward
.
<androidx.constraintlayout.widget.ConstraintLayout ...> <Button android:id="@+id/button1" android:nextFocusForward="@+id/editText1" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" ... /> <Button android:id="@+id/button2" android:nextFocusForward="@+id/button1" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/button1" ... /> <EditText android:id="@id/editText1" android:nextFocusForward="@+id/button2" app:layout_constraintBottom_toBottomOf="@+id/button2" app:layout_constraintRight_toLeftOf="@id/button2 ... /> ... </androidx.constraintlayout.widget.ConstraintLayout>
Ahora, en lugar de que el foco cambie de button1
button2
y, luego, editText1
, se trasladan
según la apariencia en la pantalla: de button1
a
editText1
y, luego, button2
.
Cómo controlar la navegación direccional
Los usuarios también pueden navegar por tu app con las teclas de flecha del teclado, que se comporta de la misma manera que cuando navegas con un pad direccional o una bola de seguimiento. El sistema proporciona una “mejor estimación” a qué vista poner el foco en una dirección dada según el diseño de las vistas en la pantalla. Sin embargo, a veces el sistema adivinen el error.
Si el sistema no pasa el foco a la vista adecuada al navegar en una en una dirección determinada, especifica qué vista debe recibir el foco con los siguientes atributos:
Cada atributo designa la siguiente vista que recibirá el enfoque cuando el usuario navegue en esa dirección, según lo especificado por el ID de vista. Esto se muestra en el siguiente ejemplo:
<Button android:id="@+id/button1" android:nextFocusRight="@+id/button2" android:nextFocusDown="@+id/editText1" ... /> <Button android:id="@id/button2" android:nextFocusLeft="@id/button1" android:nextFocusDown="@id/editText1" ... /> <EditText android:id="@id/editText1" android:nextFocusUp="@id/button1" ... />
Recursos adicionales
Consulta los siguientes recursos relacionados: