FocusManager позволяет перемещать фокус в определенном направлении или полностью его убирать.
Используйте FocusRequester для прямого таргетинга на компоненты (см. раздел Программный запрос фокуса).
Перемещение фокуса в определенном направлении с помощью FocusManager
Чтобы программно переместить фокус в относительном направлении:
- Получите экземпляр
FocusManagerс помощьюLocalFocusManager.current. - Вызовите
moveFocus()со значениемFocusDirection(Next,Previous,Up,Down,Left,Right,EnterилиExit).
val focusManager = LocalFocusManager.current Button( onClick = { focusManager.moveFocus(FocusDirection.Next) } ) { Text("Next Field") }
Снять фокус
Чтобы убрать фокус с элемента, на котором он находится (например, когда пользователь нажимает клавишу Esc), вызовите clearFocus():
val focusManager = LocalFocusManager.current Box( modifier = Modifier.onPreviewKeyEvent { keyEvent -> if (keyEvent.key == Key.Escape && keyEvent.type == KeyEventType.KeyUp) { focusManager.clearFocus() true } else { false } } )
Функция clearFocus() принимает необязательный параметр force: Boolean = false:
force = false(по умолчанию). Учитывает блокировку фокуса и не снимает его, если активный компонент захватил фокус.force = true– безусловно снимает фокус, даже если он был захвачен компонентом.
Рекомендуем
- Примечание. Текст ссылки показывается, когда JavaScript отключен.
- Цели фокусировки
- Порядок обхода фокуса
- Программный запрос фокуса