移动并清除焦点

FocusManager 可让您按方向移动焦点或完全清除焦点。 使用 FocusRequester 进行直接组件定位(请参阅以编程方式请求焦点)。

使用 FocusManager 进行定向焦点移动

如需以相对方向通过编程方式移动焦点,请执行以下操作:

  1. 使用 LocalFocusManager.current 获取 FocusManager 实例。
  2. 使用 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:无条件清除焦点,即使组件已捕获焦点。