Tastaturnavigation unterstützen

Compose ausprobieren
Jetpack Compose ist das empfohlene UI-Toolkit für Android. Informationen zur Verwendung von Touch- und Eingabefunktionen in Compose

Neben Soft-Eingabemethoden wie Bildschirmtastaturen unterstützt Android auch physische Tastaturen, die an das Gerät angeschlossen sind. Eine Tastatur bietet eine praktische Möglichkeit zur Texteingabe und zur Navigation und Interaktion mit Ihrer App. Obwohl auf den meisten tragbaren Geräten wie Smartphones Touch als primäre Interaktionsmethode verwendet wird, sind Tablets und ähnliche Geräte beliebt und viele Nutzer schließen gerne Tastaturzubehör an.

Da immer mehr Android-Geräte diese Art von Nutzung ermöglichen, ist es wichtig, dass Sie Ihre App für die Interaktion über eine Tastatur optimieren. In diesem Dokument wird beschrieben, wie Sie die Navigation mit einer Tastatur verbessern können.

App testen

Nutzer können Ihre App möglicherweise bereits mit einer Tastatur bedienen, da das Android-System die meisten erforderlichen Verhaltensweisen standardmäßig ermöglicht.

Alle interaktiven Widgets, die vom Android-Framework bereitgestellt werden, z. B. Button und EditText, sind fokussierbar. Das bedeutet, dass Nutzer mit Steuergeräten wie einem Steuerkreuz oder einer Tastatur navigieren können und jedes Widget leuchtet oder ändert sein Aussehen, wenn es den Eingabefokus erhält.

So testen Sie Ihre App:

  1. Installieren Sie Ihre App auf einem Gerät mit einer Hardwaretastatur.

    Wenn Sie kein Hardwaregerät mit einer Tastatur haben, schließen Sie eine Bluetooth-Tastatur oder eine USB-Tastatur an.

    Sie können auch den Android-Emulator verwenden:

    1. Klicken Sie im AVD Manager entweder auf New Device (Neues Gerät) oder wählen Sie ein vorhandenes Profil aus und klicken Sie auf Clone (Klonen).
    2. Achten Sie darauf, dass im angezeigten Fenster Tastatur und Steuerkreuz aktiviert sind.
  2. Verwenden Sie zum Testen Ihrer App nur die Tabulatortaste, um durch die Benutzeroberfläche zu navigieren. Achte darauf, dass jedes UI-Steuerelement wie erwartet den Fokus erhält.

    Achten Sie auf Fälle, in denen sich der Fokus unerwartet verschiebt.

  3. Beginnen Sie noch einmal von Anfang an und navigieren Sie durch die Benutzeroberfläche Ihrer App, indem Sie Richtungstasten wie die Pfeiltasten auf der Tastatur verwenden. Drücken Sie bei jedem fokussierbaren Element in der Benutzeroberfläche die Tasten Nach oben, Nach unten, Nach links und Nach rechts.

    Achten Sie auf Fälle, in denen sich der Fokus unerwartet verschiebt.

Wenn Sie auf Fälle stoßen, in denen die Navigation mit der Tabulatortaste oder den Richtungstasten nicht wie erwartet funktioniert, geben Sie an, wo der Fokus in Ihrem Layout liegen muss, wie in den folgenden Abschnitten beschrieben.

Tabnavigation verarbeiten

Wenn ein Nutzer mit der Tabulatortaste durch Ihre App navigiert, wird der Eingabefokus vom System basierend auf der Reihenfolge, in der die Elemente im Layout angezeigt werden, zwischen den Elementen verschoben. Wenn Sie beispielsweise ein relatives Layout verwenden und die Reihenfolge der Elemente auf dem Bildschirm sich von der Reihenfolge in der Datei unterscheidet, müssen Sie die Fokusreihenfolge möglicherweise manuell angeben.

Im folgenden Layout sind beispielsweise zwei Schaltflächen rechtsbündig ausgerichtet und ein Textfeld links neben der zweiten Schaltfläche. Damit der Fokus vom ersten Button zum Textfeld und dann zum zweiten Button wechselt, muss im Layout die Fokusreihenfolge für jedes der fokussierbaren Elemente mit dem Attribut android:nextFocusForward explizit definiert werden.

<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>

Der Fokus bewegt sich jetzt nicht mehr von button1 zu button2 und dann zu editText1, sondern entsprechend der Darstellung auf dem Bildschirm: von button1 zu editText1 und dann zu button2.

Routenführung mit Richtungsangaben

Nutzer können auch mit den Pfeiltasten auf einer Tastatur durch Ihre App navigieren. Das funktioniert genauso wie die Navigation mit einem Steuerkreuz oder Trackball. Das System gibt eine „beste Schätzung“ dafür ab, welche Ansicht in einer bestimmten Richtung in den Fokus gerückt werden soll, basierend auf dem Layout der Ansichten auf dem Bildschirm. Manchmal liegt das System aber auch falsch.

Wenn das System den Fokus bei der Navigation in einer bestimmten Richtung nicht an die entsprechende Ansicht übergibt, geben Sie mit den folgenden Attributen an, welche Ansicht den Fokus erhalten muss:

Jedes Attribut gibt die nächste Ansicht an, die den Fokus erhält, wenn der Nutzer in die entsprechende Richtung navigiert. Die Richtung wird durch die Ansichts-ID angegeben. Dies wird im folgenden Beispiel gezeigt:

<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"
    ...  />

Zusätzliche Ressourcen

Weitere Informationen finden Sie in den folgenden Ressourcen: