В специализированных режимах взаимодействия (например, при использовании встроенного холста для рисования, поверхности игрового контроллера или модального диалогового окна ввода) приложению может потребоваться временно заблокировать фокус на одном компоненте и запретить переход с помощью клавиши Tab или клавиш со стрелками.
Захват фокуса
Чтобы захватить фокус, вызовите captureFocus() для FocusRequester:
val focusRequester = remember { FocusRequester() } Box( modifier = Modifier .focusRequester(focusRequester) .focusable() .onFocusChanged { focusState -> if (focusState.isFocused) { focusRequester.captureFocus() } } )
Пока фокус захвачен, стандартные клавиши навигации (например, Tab) не перемещают его на соседние компоненты.
Отменить выделение
Чтобы выйти из состояния захвата и восстановить обычную навигацию по фокусу в интерфейсе, вызовите freeFocus():
IconButton( onClick = { focusRequester.freeFocus() } ) { Icon(Icons.Default.Close, contentDescription = "Exit focus lock") }
Рекомендуем
- Примечание. Текст ссылки показывается, когда JavaScript отключен.
- Цели фокусировки
- Цели по группам
- Программный запрос фокуса