В специализированных режимах взаимодействия (например, на встроенном холсте для рисования, поверхности игрового контроллера или в модальном диалоговом окне ввода) вашему приложению может потребоваться временно заблокировать фокус на одном компоненте и предотвратить переход на другие компоненты с помощью клавиши 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 отключен.
- Целевые показатели
- Целевые показатели фокусировки группы
- Программно запросить фокус