Oltre ai metodi di immissione soft, come le tastiere sullo schermo, Android supporta le tastiere fisiche collegate al dispositivo. Una tastiera offre una modalità comoda per l'inserimento di testo e un modo per gli utenti di navigare e interagire con la tua app. Sebbene la maggior parte dei dispositivi portatili come gli smartphone utilizzi il tocco come modalità di interazione principale, i tablet e dispositivi simili sono molto apprezzati e molti utenti amano collegarvi accessori con tastiera.
Poiché sempre più dispositivi Android offrono questo tipo di esperienza, è importante ottimizzare l'app in modo che supporti l'interazione tramite una tastiera. Questo documento descrive come puoi migliorare la navigazione con una tastiera.
Testare l'app
Gli utenti potrebbero essere già in grado di navigare nella tua app utilizzando una tastiera, perché il sistema Android attiva per impostazione predefinita la maggior parte dei comportamenti necessari.
Tutti i widget interattivi forniti dal framework Android, come
Button
e
EditText
, possono essere selezionati. Ciò significa che gli utenti possono navigare con dispositivi di controllo come un D-pad o una tastiera e ogni widget si illumina o cambia aspetto quando acquisisce lo stato attivo.
Per testare l'app, svolgi la seguente procedura:
- Installa l'app su un dispositivo che offre una tastiera hardware.
Se non hai un dispositivo hardware con una tastiera, collega una tastiera Bluetooth o USB.
Puoi anche utilizzare l'emulatore Android:
- In Gestione AVD, fai clic su Nuovo dispositivo o seleziona un profilo esistente e fai clic su Clona.
- Nella finestra visualizzata, assicurati che Tastiera e D-pad siano attivati.
- Per testare l'app, utilizza solo il tasto Tab per navigare nell'interfaccia utente. Assicurati che ogni controllo dell'interfaccia utente riceva lo stato attivo come previsto.
Cerca eventuali casi in cui lo stato attivo si sposta in modo imprevisto.
- Ricomincia dall'inizio dell'app e naviga nella UI utilizzando i controlli direzionali come i tasti freccia sulla tastiera. In ogni
elemento acquisibile della UI, premi Su, Giù,
Sinistra e Destra.
Cerca eventuali casi in cui lo stato attivo si sposta in modo imprevisto.
Se riscontri casi in cui la navigazione con il tasto Tab o con i controlli direzionali non produce il risultato previsto, specifica dove deve essere il fuoco nel layout, come descritto nelle sezioni seguenti.
Gestire la navigazione tra le schede
Quando un utente naviga nella tua app utilizzando il tasto Tab della tastiera, il sistema passa lo stato attivo di immissione tra gli elementi in base all'ordine in cui vengono visualizzati nel layout. Ad esempio, se utilizzi un layout relativo e l'ordine degli elementi sullo schermo è diverso da quello nel file, potresti dover specificare manualmente l'ordine di attivazione.
Ad esempio, nel layout seguente, due pulsanti sono allineati sul lato destro e un campo di testo è allineato a sinistra del secondo pulsante. Per passare il focus dal primo pulsante al campo di testo e poi al secondo pulsante, il layout deve definire esplicitamente l'ordine di attivazione per ciascuno degli elementi attivabili con l'attributo 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 passare da button1
a
button2
e poi a editText1
, l'attenzione si sposta in modo appropriato
in base all'aspetto sullo schermo: da button1
a
editText1
e poi a button2
.
Gestire la navigazione con indicazioni stradali
Gli utenti possono anche navigare nella tua app utilizzando i tasti freccia su una tastiera, che si comportano come quando si naviga con un D-pad o una trackball. Il sistema fornisce una "supposizione migliore" su quale vista mettere a fuoco in una determinata direzione in base al layout delle visualizzazioni sullo schermo. Tuttavia, a volte il sistema fa una stima sbagliata.
Se il sistema non passa lo stato attivo alla visualizzazione appropriata quando navighi in una determinata direzione, specifica quale visualizzazione deve ricevere lo stato attivo con i seguenti attributi:
Ogni attributo designa la visualizzazione successiva che deve ricevere lo stato attivo quando l'utente naviga in quella direzione, come specificato dall'ID visualizzazione. Come mostrato 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: