В некоторых сценариях использования приложения фокус нужно явно переводить на определенный компонент. Например, когда пользователь нажимает кнопку "Поиск", вы можете автоматически переводить фокус на поле ввода поискового запроса.
Как использовать FocusRequester
Чтобы явно запросить фокус:
- Создайте экземпляр
FocusRequesterи запомните его:val focusRequester = remember { FocusRequester() }. - Прикрепите
FocusRequesterк целевому элементу с помощью модификатора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 отключен.
- Цели фокусировки
- Как сгруппировать цели
- Как восстановить концентрацию
- Перемещение и снятие фокуса