Enfoque en campos de texto

Cuando los usuarios navegan por una IU de Compose con un teclado físico, un pad direccional o un control rotatorio, los campos de texto participan en la navegación por enfoque junto con otros objetivos de enfoque.

De forma predeterminada, el enfoque no se limita a 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 de software que se coordine con la navegación del teclado de hardware. ImeAction.Next mueve el enfoque al siguiente objetivo de enfoque, por ejemplo.

Recorrido del enfoque unidimensional

En el recorrido del enfoque unidimensional, el comportamiento de la tecla Tab depende del lineLimits configurado en el campo de texto:

  • Campos de texto de una sola línea (TextFieldLineLimits.SingleLine) Si presionas la tecla Tab, el enfoque se mueve al siguiente objetivo de enfoque en la IU.
  • Campos de texto de varias líneas (TextFieldLineLimits.MultiLine() o predeterminado): Si presionas 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 de forma incondicional al objetivo de enfoque anterior en los campos de texto de una sola línea y 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 usas las teclas de flecha (o un pad direccional), las teclas direccionales primero mueven el cursor de texto (caret) dentro del campo de texto:

  • Navegación vertical (arriba / abajo): Si presionas la tecla Down, el signo de intercalación se mueve 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, se transfiere el enfoque 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 / final): Si presionas las teclas de flecha horizontales, el signo de intercalación se mueve 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, usa los controles de pad direccional sin un teclado físico:

  1. Cuando se mueve el enfoque a un campo de texto, se muestra automáticamente el teclado en pantalla.
  2. El usuario navega por las teclas del teclado en pantalla con el pad direccional.
  3. Si presionas el botón Atrás, se descarta el teclado en pantalla y se mantiene el enfoque en el campo de texto.
  4. Una vez que se cierra el teclado en pantalla, si presionas las teclas direccionales del pad direccional, el enfoque se mueve a los objetivos de enfoque vecinos en la pantalla.
  5. Si presionas el botón Atrás por segunda vez, se activará la navegación hacia atrás estándar del sistema.