Cuando los usuarios navegan por una IU de Compose con un teclado de hardware, un pad direccional o un control giratorio, los campos de texto participan en la navegación con enfoque junto con otros objetivos de enfoque.
De forma predeterminada, el enfoque no se queda atrapado en los campos de texto. No es necesario que agregues controladores de eventos de teclas personalizados (onKeyEvent o onPreviewKeyEvent) para permitir que los usuarios abandonen un campo de texto. Los usuarios siempre pueden salir con Mayúsculas + Tab o navegando más allá de los límites del texto con las teclas de dirección.
KeyboardOptions se puede usar para proporcionar una acción intuitiva del teclado en pantalla que se coordine con la navegación del teclado de hardware.
Por ejemplo, ImeAction.Next mueve el enfoque al siguiente objetivo de enfoque.
Recorrido del enfoque unidimensional
En el recorrido de enfoque unidimensional,
el comportamiento de la tecla Tab depende de la
lineLimits configurada en el campo de texto:
- Campos de texto de una sola línea (
TextFieldLineLimits.SingleLine) Si presionas la tecla Tab, el enfoque se moverá al siguiente objetivo de enfoque de la IU. - Campos de texto de varias líneas (
TextFieldLineLimits.MultiLine()o predeterminado): Cuando se presiona la tecla Tab, se inserta un carácter de tabulación (\t) en el búfer de texto en lugar de mover el enfoque. - Navegación inversa (Mayúsculas + Tab): Si presionas Mayúsculas + Tab, el enfoque se mueve hacia atrás al objetivo de enfoque anterior, tanto en los campos de texto de una sola línea como en los de varias líneas.
// Single-line text field: Tab advances focus to the next focus target BasicTextField( state = singleLineState, lineLimits = TextFieldLineLimits.SingleLine, modifier = Modifier.fillMaxWidth() ) // Multi-line text field: Tab inserts '\t'; Shift + Tab moves to previous target BasicTextField( state = multiLineState, lineLimits = TextFieldLineLimits.MultiLine(), modifier = Modifier.fillMaxWidth() )
Recorrido del enfoque bidimensional
Cuando se usan las teclas de flecha (o un pad direccional), las teclas de dirección primero mueven el cursor de texto (signo de intercalación) dentro del campo de texto:
- Navegación vertical (hacia arriba o hacia abajo):
Si presionas la tecla
Down, el signo de intercalación se moverá hacia abajo línea por línea. Cuando el signo de intercalación llega a la última línea, si vuelves a presionar la tecla Abajo, el enfoque se transfiere al objetivo de enfoque adyacente que se encuentra debajo del campo de texto. Si presionas la tecla Arriba en la primera línea, el enfoque se mueve al objetivo de enfoque anterior. - Navegación horizontal (izquierda / derecha / inicio / fin): Si presionas las teclas de flecha horizontal, el signo de intercalación se moverá por los caracteres. Cuando el signo de intercalación llega al principio o al final del búfer de texto, si vuelves a presionar la tecla de dirección, el enfoque se transfiere al objetivo de enfoque adyacente en esa dirección.
Campos de texto en Android TV
En Android TV, cuando se usan controles de pad direccional sin un teclado físico, se aplica lo siguiente:
- Cuando se mueve el enfoque a un campo de texto, se muestra automáticamente el teclado en pantalla.
- El usuario navega por las teclas del teclado en pantalla con el pad direccional.
- Si presionas el botón Atrás, se descarta el teclado en pantalla, pero se mantiene el enfoque en el campo de texto.
- Una vez que se descarta el teclado en pantalla, si presionas las teclas de dirección del pad direccional, el enfoque se mueve a los objetivos de enfoque vecinos en la pantalla.
- Si presionas el botón Atrás por segunda vez, se activará la navegación hacia atrás estándar del sistema.
Recomendaciones para ti
- Nota: El texto del vínculo se muestra cuando JavaScript está desactivado
- Objetivos de enfoque
- Orden de recorrido del enfoque
- Agrupa los destinos de enfoque
- Cómo probar la navegación con enfoque