В некоторых пользовательских потоках вашему приложению необходимо явно переместить фокус на определенный компонент. Например, когда пользователь нажимает кнопку "Поиск", фокус может автоматически перемещаться в поле ввода.
Используйте FocusRequester
Чтобы явно запросить фокус:
- Создайте и запомните экземпляр
FocusRequester:val focusRequester = remember { FocusRequester() }. - Прикрепите
FocusRequesterк целевой composable-функции с помощью модификатораfocusRequester. - Вызовите
requestFocus()внутри обратного вызова события (например,onClick) или области сопрограммы.
val focusRequester = remember { FocusRequester() } var text by remember { mutableStateOf("") } TextField( value = text, onValueChange = { text = it }, modifier = Modifier.focusRequester(focusRequester) )
val focusRequester = remember { FocusRequester() } var text by remember { mutableStateOf("") } TextField( value = text, onValueChange = { text = it }, modifier = Modifier.focusRequester(focusRequester) ) Button(onClick = { focusRequester.requestFocus() }) { Text("Request focus on TextField") }
Как настроить фокус начального экрана
Чтобы при первом появлении экрана фокус был на определенном компоненте, активируйте requestFocus() внутри LaunchedEffect(Unit):
LaunchedEffect(Unit) {
focusRequester.requestFocus()
}
При переходе между контейнерами или возврате с другого экрана вы также можете прикрепить focusRestorer() к родительским контейнерам, чтобы автоматически возвращать фокус к последнему дочернему элементу, который был в фокусе.
Подробную информацию можно найти в руководстве Восстановление фокуса.
Рекомендуем
- Примечание. Текст ссылки показывается, когда JavaScript отключен.
- Цели фокусировки
- Цели по группам
- Восстановление фокуса
- Как переместить и убрать фокус