Состояние фокуса обеспечивает четкую визуальную подсказку, помогающую пользователям понять, какой элемент пользовательского интерфейса в данный момент находится в фокусе ввода. Все интерактивные компоненты Material 3 по умолчанию имеют встроенные индикаторы фокуса.
Индикация фокуса в тематическом оформлении Material Design
Компоненты Material используют функцию ripple и LocalIndication, чтобы отображать изменения визуального состояния.
Чтобы прикрепить стандартный отзыв о фокусе Material к пользовательскому компоненту:
- Создайте
MutableInteractionSourceс помощьюremember { MutableInteractionSource() }. - Передайте источник взаимодействия в модификатор
indicationвместе сripple().
val interactionSource = remember { MutableInteractionSource() } Box( modifier = Modifier .clickable( interactionSource = interactionSource, indication = null ) { /* onClick */ } .indication( interactionSource = interactionSource, indication = ripple() ) ) { Text("Custom component with Material ripple") }
Как реализовать собственные индикаторы фокуса
Для собственных визуальных подсказок (например, масштабирования, границ или эффектов свечения):
- Создайте
IndicationNodeFactory. - Отслеживайте взаимодействия с фокусом, которые генерирует
InteractionSourceэлемента. - Примените специальное обозначение с помощью модификатора
indication.
var interactionSource = remember { MutableInteractionSource() } Card( modifier = Modifier .clickable( interactionSource = interactionSource, indication = MyHighlightIndication, enabled = true, onClick = { } ) ) { Text("hello") }
Рекомендуем
- Примечание. Текст ссылки показывается, когда JavaScript отключен.
- Цели фокусировки
- Порядок обхода фокуса
- Реагируйте на фокус