FocusManager permite mover o foco de forma direcional ou limpar tudo.
Use FocusRequester para segmentação direta de componentes. Consulte Solicitar foco de forma programática.
Movimento direcional do foco com o FocusManager
Para mover o foco de forma programática em uma direção relativa:
- Acesse a instância
FocusManagerusandoLocalFocusManager.current. - Chame
moveFocus()com um valorFocusDirection(Next,Previous,Up,Down,Left,Right,EnterouExit).
val focusManager = LocalFocusManager.current Button( onClick = { focusManager.moveFocus(FocusDirection.Next) } ) { Text("Next Field") }
Foco nítido
Para remover o foco do elemento que o detém no momento
(por exemplo, quando o usuário pressiona a tecla Esc),
chame clearFocus():
val focusManager = LocalFocusManager.current Box( modifier = Modifier.onPreviewKeyEvent { keyEvent -> if (keyEvent.key == Key.Escape && keyEvent.type == KeyEventType.KeyUp) { focusManager.clearFocus() true } else { false } } )
A função clearFocus() aceita um parâmetro force: Boolean = false opcional:
force = false(padrão): respeita os bloqueios de foco e não limpa o foco se o componente ativo tiver foco capturado.force = true: limpa o foco incondicionalmente, mesmo que um componente tenha capturado o foco.
Recomendados para você
- Observação: o texto do link aparece quando o JavaScript está desativado.
- Segmentações por foco
- Ordem de apresentação do foco
- Solicitar o foco de maneira programática