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: コンポーネントがフォーカスをキャプチャしている場合でも、無条件にフォーカスをクリアします。
あなたへのおすすめ
- 注: JavaScript がオフになっている場合はリンクテキストが表示されます
- フォーカス ターゲット
- フォーカス移動順序
- プログラムでフォーカスをリクエストする