移動並清除焦點

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:即使元件已擷取焦點,也會無條件清除焦點。