Supporta la navigazione da tastiera

Oltre ai metodi di immissione software, come i metodi di inserimento tastiere: Android supporta tastiere fisiche collegate al dispositivo. R tastiera offre una comoda modalità per l'inserimento di testo e un modo per navigare e interagire con l'app. Sebbene la maggior parte dei dispositivi portatili come telefoni usano il tocco come modalità principale di interazione, tablet e simili sono molto diffusi e molti utenti preferiscono collegare accessori per tastiera che li rappresentano.

Dato che sempre più dispositivi Android offrono questo tipo di esperienza, è importante ottimizzare l'app per supportare l'interazione tramite tastiera. Questo documento descrive come migliorare la navigazione con una tastiera.

Testare l'app

Gli utenti potrebbero essere già in grado di navigare nella tua app con una tastiera, il sistema Android attiva la maggior parte dei comportamenti necessari per impostazione predefinita.

Tutti i widget interattivi forniti dal framework Android, ad esempio Button e EditText: sono attivabile. Ciò significa che gli utenti possono navigare usando dispositivi di controllo come D-pad o tastiera e ogni widget si illumina o cambia aspetto quando viene prende in considerazione gli input.

Per testare l'app, esegui la procedura seguente:

  1. Installa la tua app su un dispositivo dotato di tastiera hardware.

    Se non hai un dispositivo hardware con tastiera, collega un Bluetooth o una tastiera USB.

    Puoi anche usare l'emulatore Android:

    1. In Gestione AVD, fai clic su Nuovo dispositivo o seleziona un profilo esistente e fai clic su Clona.
    2. Nella finestra visualizzata, assicurati che Tastiera e D-pad siano in un bucket con il controllo delle versioni attivo.
  2. Per testare l'app, usa solo il tasto Tab per spostarti tra le nell'interfaccia utente. Assicurati che ogni controllo UI venga attivato come previsto.

    Cerca tutte le istanze in cui lo stato attivo si sposta in una fase imprevista in modo adeguato.

  3. Ricomincia dall'inizio dell'app e naviga nella UI usando i controlli di direzione come i tasti freccia sulla tastiera. Da ogni elemento attivabile nell'interfaccia utente, premi SU, GIÙ Sinistra e Destra.

    Cerca tutte le istanze in cui lo stato attivo si sposta in una fase imprevista in modo adeguato.

Se riscontri casi in cui navighi con il tasto Tab o i controlli di direzione non fanno quello che ti aspetti, specifica dove l'elemento attivo essere nel layout, come illustrato nelle sezioni seguenti.

Gestire la navigazione delle schede

Quando un utente naviga nell'app utilizzando il tasto Tab della tastiera, verrà il sistema passa lo stato attivo dell'input tra gli elementi in base all'ordine in cui vengono vengono visualizzate nel layout. Se, ad esempio, utilizzi un layout relativo e l'ordine degli elementi sullo schermo è diverso dall'ordine nel file, potrebbe essere necessario specificare manualmente l'ordine di impostazione dello stato attivo.

Ad esempio, nel layout seguente, due pulsanti sono allineati a destra e un campo di testo è allineato a sinistra del secondo pulsante. Per superare lo stato attivo dal primo pulsante al campo di testo e poi al secondo pulsante, deve definire esplicitamente l'ordine di messa a fuoco di ogni elemento con 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>

Ora, invece di spostare lo stato attivo da button1 a button2 e poi editText1, si spostano in modo appropriato in base all'aspetto sullo schermo: da button1 a editText1 e poi button2.

Gestisci la navigazione direzionale

Gli utenti possono anche navigare nell'app usando i tasti freccia sulla tastiera, si comporta come quando si naviga con un D-pad o una trackball. Il sistema fornisce una "migliore ipotesi" su quale vista concentrare l'attenzione in una determinata direzione in base al layout delle visualizzazioni sullo schermo. Tuttavia, a volte il sistema ipotesi errate.

Se il sistema non passa lo stato attivo alla vista appropriata durante la navigazione in una direzione specifica, specifica quale vista deve ricevere lo stato attivo con le attributi:

Ogni attributo indica la vista successiva su cui attivare lo stato attivo quando l'utente si sposta in quella direzione, come specificato dall'ID vista. Ciò viene mostrato nella nell'esempio seguente:

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

Risorse aggiuntive

Consulta le seguenti risorse correlate: