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 がオフになっている場合はリンクテキストが表示されます
- フォーカス ターゲット
- フォーカス移動順序
- プログラムでフォーカスをリクエストする