FocusManager te permite mover el enfoque en una dirección o quitarlo por completo.
Usa FocusRequester para la segmentación directa de componentes (consulta Cómo solicitar el enfoque de forma programática).
Movimiento de enfoque direccional con FocusManager
Para mover el enfoque de forma programática en una dirección relativa, haz lo siguiente:
- Obtén la instancia de
FocusManagerconLocalFocusManager.current. - Llama a
moveFocus()con un valor deFocusDirection(Next,Previous,Up,Down,Left,Right,EnteroExit).
val focusManager = LocalFocusManager.current Button( onClick = { focusManager.moveFocus(FocusDirection.Next) } ) { Text("Next Field") }
Enfoque claro
Para quitar el enfoque del elemento que lo tenga en ese momento (por ejemplo, cuando el usuario presiona la tecla Esc), llama a clearFocus():
val focusManager = LocalFocusManager.current Box( modifier = Modifier.onPreviewKeyEvent { keyEvent -> if (keyEvent.key == Key.Escape && keyEvent.type == KeyEventType.KeyUp) { focusManager.clearFocus() true } else { false } } )
La función clearFocus() acepta un parámetro force: Boolean = false opcional:
force = false(predeterminado): Respeta los bloqueos de enfoque y no borrará el enfoque si el componente activo tiene el enfoque capturado.force = true: Borra el enfoque de forma incondicional, incluso si un componente lo capturó.
Recomendaciones para ti
- Nota: El texto del vínculo se muestra cuando JavaScript está desactivado
- Objetivos de enfoque
- Orden de recorrido del enfoque
- Cómo solicitar el enfoque de forma programática