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:无条件清除焦点,即使组件已捕获焦点也是如此。