聚焦状态可提供清晰的视觉提示,帮助用户了解哪个界面元素当前具有输入焦点。默认情况下,所有互动式 Material 3 组件都提供内置焦点指示。
Material 主题焦点指示
Material 组件使用 ripple 函数和 LocalIndication 绘制视觉状态变化。如需将标准 Material 焦点反馈附加到自定义组件,请执行以下操作:
- 使用
remember { MutableInteractionSource() }创建MutableInteractionSource。 - 将互动来源与
ripple()一起传递给indication修饰符。
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") }