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