Цель фокуса – это элемент интерфейса, на который можно переместить фокус клавиатуры. Пользователи могут перемещать фокус клавиатуры с помощью клавиши Tab или клавиш со стрелками.
- Tab или Shift + Tab – перемещение фокуса вперед или назад в одномерном порядке появления.
- Клавиши со стрелками – перемещение фокуса в двух измерениях (вверх, вниз, влево и вправо).
Интерактивные элементы интерфейса по умолчанию являются целями фокусировки
Интерактивный компонент по умолчанию является целью фокуса. Другими словами, элемент пользовательского интерфейса является целью фокуса, если пользователи могут нажать на него.
Например, у вас есть три компонента Карточка. Если первая и третья карточки интерактивные (для них определен обратный вызов onClick), а вторая – чисто информационная (без обработки кликов), то при нажатии клавиши Tab на первой карточке фокус перейдет сразу на третью.
Card(onClick = { /* First card action */ }) { Text("Card 1 (Interactive)") } Card { Text("Card 2 (Informational - not focusable)") } Card(onClick = { /* Third card action */ }) { Text("Card 3 (Interactive)") }
Чтобы фокус был на второй карточке, укажите параметр onClick:
Card(onClick = { /* Second card action */ }) { Text("Card 2 (Now interactive and focusable)") }
Модификатор clickable также превращает пользовательские или стандартные элементы пользовательского интерфейса в цели фокусировки. Подробности см. в разделе Нажатие и удержание.
Box( modifier = Modifier .clickable { /* Handle click */ } ) { Text("Custom interactive element") }
Как сделать composable-функцию некликабельной целью фокуса
Модификатор focusable делает composable-функцию целью фокуса без необходимости семантики клика. Пользователи могут переместить фокус клавиатуры на измененную composable-функцию (например, чтобы проверить контент с помощью инструментов специальных возможностей или прокрутить область просмотра), но нажатие клавиши Ввод или Пробел не запускает действие клика.
Box( modifier = Modifier .focusable() ) { Text("Non-clickable focus target") }
Как сделать composable-функцию нефокусируемой
В некоторых случаях может потребоваться исключить интерактивный элемент из навигации с помощью клавиатуры, не отключая события указателя или клика. Вы можете запретить компоненту получать фокус, установив canFocus = false внутри модификатора focusProperties:
var checked by remember { mutableStateOf(false) } Switch( checked = checked, onCheckedChange = { checked = it }, // Prevent component from being focused modifier = Modifier .focusProperties { canFocus = false } )
Рекомендуем
- Примечание. Текст ссылки показывается, когда JavaScript отключен.
- Порядок обхода фокуса
- Как перейти к текстовому полю
- Цели по группам
- Обозначение фокуса
- Как протестировать навигацию с фокусом