En los modos de interacción especializados (como un lienzo de dibujo integrado, la superficie de un control de juegos o un diálogo de entrada modal), es posible que tu app necesite bloquear temporalmente el enfoque en un solo componente y evitar que las teclas de Tab o direccionales salgan de la navegación.
Captura el enfoque
Para capturar el enfoque, invoca captureFocus() en un FocusRequester:
val focusRequester = remember { FocusRequester() } Box( modifier = Modifier .focusRequester(focusRequester) .focusable() .onFocusChanged { focusState -> if (focusState.isFocused) { focusRequester.captureFocus() } } )
Mientras se captura el enfoque, las teclas de navegación de enfoque estándar (como Tab) no mueven el enfoque a los componentes vecinos.
Cómo liberar el enfoque
Para salir del estado de captura y restablecer la navegación normal por enfoque en la IU, llama a freeFocus():
IconButton( onClick = { focusRequester.freeFocus() } ) { Icon(Icons.Default.Close, contentDescription = "Exit focus lock") }
Recomendaciones para ti
- Nota: El texto del vínculo se muestra cuando JavaScript está desactivado
- Objetivos de enfoque
- Agrupa los destinos de enfoque
- Cómo solicitar el enfoque de forma programática