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 отключен.
- Целевые показатели
- Порядок перемещения фокуса
- Программно запросить фокус