フォーカス ターゲットとは、キーボード フォーカスを移動できる UI 要素です。ユーザーは Tab キーと方向(矢印)キーを使用してキーボード フォーカスを移動できます。
- Tab または Shift+Tab - 1 次元の外観順でフォーカスを前後に移動します。
- 方向キー - フォーカスを 2 次元(上、下、左、右)に移動します。
インタラクティブな UI 要素はデフォルトでフォーカス ターゲットになる
インタラクティブなコンポーネントは、デフォルトでフォーカス ターゲットとして設定されます。つまり、ユーザーがタップまたはクリックできる UI 要素はフォーカス ターゲットであるということです。
たとえば、3 つの Card コンポーネントについて考えてみましょう。1 番目と 3 番目のカードがインタラクティブ(onClick コールバックを定義)で、2 番目のカードが純粋に情報提供用(クリック処理がない)の場合、1 番目のカードで Tab キーを押すと、2 番目のカードがスキップされ、3 番目のカードに直接移動します。
Card(onClick = { /* First card action */ }) { Text("Card 1 (Interactive)") } Card { Text("Card 2 (Informational - not focusable)") } Card(onClick = { /* Third card action */ }) { Text("Card 3 (Interactive)") }
2 番目のカードをフォーカス ターゲットにするには、onClick パラメータを指定します。
Card(onClick = { /* Second card action */ }) { Text("Card 2 (Now interactive and focusable)") }
clickable 修飾子は、カスタムまたは標準の UI 要素をフォーカス ターゲットにも変換します。詳しくは、タップと長押しをご覧ください。
Box( modifier = Modifier .clickable { /* Handle click */ } ) { Text("Custom interactive element") }
コンポーザブルを非クリック可能なフォーカス ターゲットにする
focusable 修飾子を使用すると、クリック セマンティクスを必要とせずに、コンポーザブルをフォーカス ターゲットにできます。ユーザーはキーボード フォーカスを変更されたコンポーザブルに移動できます(たとえば、ユーザー補助ツールでコンテンツを検査したり、ビューポートをスクロールしたりできます)。ただし、Enter キーまたは Space キーを押してもクリック アクションはトリガーされません。
Box( modifier = Modifier .focusable() ) { Text("Non-clickable focus target") }
コンポーザブルをフォーカス不可にする
シナリオによっては、ポインタ イベントやクリック イベントを無効にせずに、キーボード ナビゲーションからインタラクティブ要素を除外したい場合があります。focusProperties 修飾子内で canFocus = false を設定すると、コンポーネントがフォーカスを受け取らないようにできます。
var checked by remember { mutableStateOf(false) } Switch( checked = checked, onCheckedChange = { checked = it }, // Prevent component from being focused modifier = Modifier .focusProperties { canFocus = false } )
あなたへのおすすめ
- 注: JavaScript がオフになっている場合はリンクテキストが表示されます
- フォーカス移動順序
- テキスト フィールドのフォーカス
- フォーカス ターゲットをグループ化する
- フォーカス状態を示す
- フォーカス ナビゲーションをテストする