FocusManager 可让您按方向移动焦点或完全清除焦点。
使用 FocusRequester 进行直接组件定位(请参阅以编程方式请求焦点)。
使用 FocusManager 进行定向焦点移动
如需以相对方向通过编程方式移动焦点,请执行以下操作:
- 使用
LocalFocusManager.current获取FocusManager实例。 - 使用
FocusDirection值(Next、Previous、Up、Down、Left、Right、Enter或Exit)调用moveFocus()。
val focusManager = LocalFocusManager.current Button( onClick = { focusManager.moveFocus(FocusDirection.Next) } ) { Text("Next Field") }
清晰对焦
如需移除当前持有焦点的任何元素的焦点(例如,当用户按下 Esc 键时),请调用 clearFocus():
val focusManager = LocalFocusManager.current Box( modifier = Modifier.onPreviewKeyEvent { keyEvent -> if (keyEvent.key == Key.Escape && keyEvent.type == KeyEventType.KeyUp) { focusManager.clearFocus() true } else { false } } )
clearFocus() 函数接受一个可选的 force: Boolean = false 参数:
force = false(默认):遵循焦点锁定,如果活动组件已捕获焦点,则不会清除焦点。force = true:无条件清除焦点,即使组件已捕获焦点。