画面上などのソフト入力方法に加えて、 キーボード - Android は、デバイスに接続された物理キーボードをサポートしています。 キーボードでは、テキスト入力に便利なモードに加え、ユーザーが アプリの操作や操作を行えますモバイル デバイスなど、ほとんどのハンドヘルド デバイスは スマートフォンはタップを主なインタラクション モードにしており、タブレットなどはタップを使用しています。 多くのユーザーは、キーボード アクセサリを できます。
このような機能を備えた Android デバイスが増えるにつれ、 キーボードによる操作をサポートするようにアプリを最適化しますこの このドキュメントでは、キーボードによるナビゲーションを改善する方法を説明しています。
<ph type="x-smartling-placeholder">アプリをテストする
すでにキーボードでアプリを操作できることがあります。これは、 Android システムは、必要な動作のほとんどをデフォルトで有効にします。
Android フレームワークで提供されるすべてのインタラクティブ ウィジェット
Button
、
EditText
-
焦点を絞ることができますつまり、ユーザーは D-pad や
ウィジェットが点灯したり、表示が変わったりする場合などに、
入力フォーカスを取得します。
アプリをテストするには、次の手順を行います。
- ハードウェア キーボードを備えたデバイスにアプリをインストールします。
キーボードを備えたハードウェア デバイスをお持ちでない場合は、Bluetooth で接続してください キーボードまたは USB キーボードを使用できます。
Android Emulator も使用できます。
- AVD Manager で、[New Device] をクリックするか、デバイスを選択します。 [Clone] をクリックします。
- 表示されるウィンドウで、キーボードと DPad が 有効にします。
- アプリをテストするには、Tab キーのみを使用してアプリを
UI です。各 UI コントロールが想定どおりにフォーカスされることを確認してください。
予期しないタイミングでフォーカスが移動するインスタンスを探します。 できます。
- アプリの最初からやり直して UI を操作する
キーボードの矢印キーなどの方向コントロールを使って各
フォーカス可能な要素の場合は、↑、↓、
左、右です。
予期しないタイミングでフォーカスが移動するインスタンスを探します。 できます。
Tab キーで移動した場合、 方向のコントロールが期待どおりに動作しない場合は、フォーカスする必要がある場所を レイアウトに配置する必要があります。
タブ ナビゲーションの処理
ユーザーがキーボードの Tab キーを使用してアプリを操作すると、 入力フォーカスは、その順序に基づいて要素間で渡されます。 表示されます。たとえば相対レイアウトを使用し、 画面上の要素の順序がファイル内の要素の順序と異なる場合、 フォーカス順序を手動で指定しなければならない場合があります。
たとえば、次のレイアウトでは、2 つのボタンが右側に配置されています。
2 つ目のボタンの左にテキスト フィールドが配置されます。合格
最初のボタンからテキスト フィールドに移動し、
各フォーカス可能な要素のフォーカス順序を明示的に定義する必要が
各要素を
android:nextFocusForward
属性です。
<androidx.constraintlayout.widget.ConstraintLayout ...> <Button android:id="@+id/button1" android:nextFocusForward="@+id/editText1" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" ... /> <Button android:id="@+id/button2" android:nextFocusForward="@+id/button1" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/button1" ... /> <EditText android:id="@id/editText1" android:nextFocusForward="@+id/button2" app:layout_constraintBottom_toBottomOf="@+id/button2" app:layout_constraintRight_toLeftOf="@id/button2 ... /> ... </androidx.constraintlayout.widget.ConstraintLayout>
これで、フォーカスが button1
から
button2
、次に editText1
の順に押すと、
画面上の表示に応じて、button1
から
editText1
、その後は button2
。
方向ナビゲーションの処理
ユーザーは、キーボードの矢印キーを使用してアプリを操作することもできます。 は、D-pad またはトラックボールで移動する場合と同じように動作します。システム 「最も適切な推測」を提示する特定の方向にフォーカスを当てるビュー 基づいて決定します。しかし 場合によってはシステムが 間違いです。
ビュー内の移動時にシステムが適切なビューにフォーカスを渡さない場合、 フォーカスを受け取るビューを指定するには、 属性:
各属性で、ユーザーが次のタイミングでフォーカスを受け取るビューを指定します。 ビュー ID で指定された、その方向への移動を行います。これは 次の例をご覧ください。
<Button android:id="@+id/button1" android:nextFocusRight="@+id/button2" android:nextFocusDown="@+id/editText1" ... /> <Button android:id="@id/button2" android:nextFocusLeft="@id/button1" android:nextFocusDown="@id/editText1" ... /> <EditText android:id="@id/editText1" android:nextFocusUp="@id/button1" ... />
参考情報
以下の関連リソースもご覧ください。