FocusManager te permite mover el enfoque de forma direccional o borrarlo por completo.
Usa FocusRequester para la segmentación directa de componentes (consulta Cómo solicitar el enfoque de manera programática).
Movimiento de enfoque direccional con FocusManager
Para mover el enfoque de manera programática en una dirección relativa, haz lo siguiente:
- Obtén la instancia de
FocusManagerconLocalFocusManager.current. - Llama a
moveFocus()con un valorFocusDirection(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 de cualquier elemento que lo tenga actualmente (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 manera programática