Quando gli utenti navigano in una UI di Compose con una tastiera hardware, un D-pad o un controller rotativo, i campi di testo partecipano alla navigazione con stato attivo insieme ad altri target di stato attivo.
Per impostazione predefinita, lo stato attivo non è bloccato nei campi di testo. Non è necessario aggiungere gestori di eventi
chiave personalizzati (onKeyEvent o onPreviewKeyEvent) per consentire agli utenti di uscire
da un campo di testo. Gli utenti possono sempre uscire utilizzando Maiusc + Tab o spostandosi oltre i limiti del testo con i tasti di direzione.
KeyboardOptions può essere utilizzato per fornire un'azione intuitiva della tastiera su schermo che si coordina con la navigazione da tastiera fisica.
Ad esempio, ImeAction.Next sposta lo stato attivo sul target successivo.
Attraversamento dello stato attivo monodimensionale
Nell'attraversamento dello stato attivo monodimensionale, il comportamento del tasto Tab dipende dal valore lineLimits configurato nel campo di testo:
- Campi di testo a riga singola (
TextFieldLineLimits.SingleLine) Se premi il tasto Tab, lo stato attivo si sposta sul successivo elemento attivo nell'interfaccia utente. - Campi di testo su più righe (
TextFieldLineLimits.MultiLine()o predefinito): premendo il tasto Tab, viene inserito un carattere di tabulazione (\t) nel buffer di testo anziché spostare lo stato attivo. - Navigazione inversa (Maiusc+Tab): premendo Maiusc+Tab, lo stato attivo viene spostato incondizionatamente indietro al target di stato attivo precedente sia nei campi di testo a riga singola che in quelli a più righe.
// Single-line text field: Tab advances focus to the next focus target BasicTextField( state = singleLineState, lineLimits = TextFieldLineLimits.SingleLine, modifier = Modifier.fillMaxWidth() ) // Multi-line text field: Tab inserts '\t'; Shift + Tab moves to previous target BasicTextField( state = multiLineState, lineLimits = TextFieldLineLimits.MultiLine(), modifier = Modifier.fillMaxWidth() )
Attraversamento dello stato attivo bidimensionale
Quando utilizzi i tasti freccia (o un D-pad), i tasti direzionali spostano prima il cursore del testo all'interno del campo di testo:
- Navigazione verticale (su / giù):
premendo il tasto
Down, il cursore del testo si sposta verso il basso riga per riga. Quando il cursore del testo raggiunge l'ultima riga, premendo di nuovo il tasto Giù, lo stato attivo viene trasferito al target di attivazione adiacente sotto il campo di testo. Se premi il tasto Su sulla prima riga, lo stato attivo viene spostato sul target di stato attivo precedente. - Navigazione orizzontale (sinistra / destra / inizio / fine): premendo i tasti Freccia orizzontale, il cursore del testo si sposta tra i caratteri. Quando il cursore del testo raggiunge l'inizio o la fine del buffer di testo, premendo di nuovo il tasto direzionale lo stato attivo viene trasferito al target di stato attivo adiacente in quella direzione.
Campi di testo su Android TV
Su Android TV, utilizzando i controller D-pad senza una tastiera fisica:
- Spostando lo stato attivo su un campo di testo, viene visualizzata automaticamente la tastiera su schermo.
- L'utente naviga tra i tasti della tastiera su schermo utilizzando il D-pad.
- Se premi il pulsante Indietro, la tastiera su schermo viene chiusa, ma lo stato attivo rimane sul campo di testo.
- Una volta chiusa la tastiera su schermo, premendo i tasti direzionali del D-pad lo stato attivo si sposta sui target di selezione adiacenti sullo schermo.
- Se premi il pulsante Indietro una seconda volta, viene attivata la navigazione a ritroso standard del sistema.
Consigliati per te
- Nota: il testo del link viene visualizzato quando JavaScript è disattivato
- Target di messa a fuoco
- Ordine di spostamento dello stato attivo
- Target di interesse del gruppo
- Testa la navigazione con lo stato attivo