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