FocusManager umożliwia przesunięcie ostrości w określonym kierunku lub całkowite jej usunięcie.
Użyj FocusRequester do bezpośredniego kierowania na komponent (patrz Programowe żądanie ustawienia ostrości).
Kierunkowe przesuwanie ostrości za pomocą FocusManager
Aby przenieść zaznaczenie programowo w kierunku względnym:
- Uzyskaj instancję
FocusManagerza pomocąLocalFocusManager.current. - Zadzwoń pod numer
moveFocus()z wartościąFocusDirection(Next,Previous,Up,Down,Left,Right,EnterlubExit).
val focusManager = LocalFocusManager.current Button( onClick = { focusManager.moveFocus(FocusDirection.Next) } ) { Text("Next Field") }
Wyraźne skupienie
Aby usunąć fokus z elementu, który go obecnie ma (np. gdy użytkownik naciśnie klawisz Esc), wywołaj funkcję clearFocus():
val focusManager = LocalFocusManager.current Box( modifier = Modifier.onPreviewKeyEvent { keyEvent -> if (keyEvent.key == Key.Escape && keyEvent.type == KeyEventType.KeyUp) { focusManager.clearFocus() true } else { false } } )
Funkcja clearFocus() akceptuje opcjonalny parametr force: Boolean = false:
force = false(domyślnie): uwzględnia blokady fokusu i nie usuwa fokusu, jeśli aktywny komponent przechwycił fokus.force = true: bezwarunkowo usuwa zaznaczenie, nawet jeśli komponent je przechwycił.
Polecane dla Ciebie
- Uwaga: tekst linku jest wyświetlany, gdy język JavaScript jest wyłączony.
- Punkty ostrości
- Kolejność przechodzenia między elementami
- Programowe żądanie fokusu