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